深入 C 语言和程序运行原理
于航
PayPal 技术专家
21121 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
深入 C 语言和程序运行原理
15
15
1.0x
00:00/00:00
登录|注册

大咖助阵|海纳:C 语言是如何编译执行的?(一)

词法分析器实现
自动机理论
gcc 命令行工具
从源代码到可执行文件的转换
树结构构建
节点类型
Token 创建和销毁
输入处理
状态变量
转换规则
状态定义
操作符
字符串
整数
变量
#include
#ifdef#ifndef
宏函数注意事项
字符串替换
编译单元生成
目标平台代码生成
体系结构优化
结构优化
检查语义信息
抽象语法树生成
正则表达式和有限状态自动机
Token 识别
字符串分组
gcc -E 命令查看结果
宏展开
宏定义处理
理论与实践
工具使用
编译过程
抽象语法树
自动机实现
有限状态自动机
Token 分类
包含文件
条件编译
宏定义
中间文件生成
指令选择、调度和寄存器分配
平台相关优化
平台无关优化
语义分析
文法分析
词法分析
预处理
总结
文法分析(预告)
词法分析详解
预处理详解
编译基本步骤
C语言编译执行过程

该思维导图由 AI 生成,仅供参考

你好,我是于航。这一讲是一期大咖加餐,我们邀请到了海纳老师,来跟你聊聊与 C 程序编译相关的内容。C 语言是一门语法简单,且被广泛使用的编程语言,通过观察其代码的编译流程,你能够清楚地了解一个传统编译器的基本运作原理。海纳老师会用三到四讲的篇幅,来帮助你深刻理解 C 程序的编译全过程,这也是对我们专栏内容的很好补充。感谢海纳老师,也希望你能够有所收获,对 C 语言了解得更加透彻。
你好,我是海纳,是极客时间《编程高手必学的内存知识》的专栏作者。
作为一名编译器开发工程师,在这里我想和你聊一下 C 语言的编译过程。对于 C 语言的开发者来说,深刻理解编译的过程是十分必要的。由于 C 语言非常接近底层,所以它是一门用于构建基础设施的语言。很多时候,C 语言的开发者要理解每一行代码在 CPU 上是如何执行的。所以,有经验的开发者在看到 C 的代码时,基本都能够判断它对应的汇编语句是什么。
在接下来的几篇加餐里,我会通过一个简单的例子,来说明一个 C 编译器有哪些基本步骤。在这个过程中,你也可以进一步通过操作 gcc 的相关工具,来掌握如何查看 C 编译过程的每一步的中间结果。
接下来,我们就先从对 C 编译器基本步骤的整体了解开始吧。

编译的基本步骤

一个 C 语言的源代码文件,一般要经过编译和链接两个大的步骤才能变成可执行程序。其中,编译的过程是将单个 C 源码文件翻译成中间文件。而链接器主要用于符号解析,它负责将中间文件中的符号进行跨文件解析,进而把中间文件组成一个二进制文件。关于链接的知识,于航老师已经在这个专栏的第 27~28 讲中深入地介绍过了,所以在这里我就不赘述了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了C语言的编译过程,包括预处理、词法分析、文法分析等基本步骤。通过与专栏作者海纳老师的访谈,文章介绍了词法分析的作用和手段,包括正则表达式和有限状态自动机。作者通过代码实现了一个自动机,展示了如何使用自动机进行词法分析,包括识别变量名、数字、赋值操作符等。文章深入浅出,为读者提供了深入了解C语言编译过程的基础。文章内容涵盖了C语言编译的基本步骤和预处理的工作原理,适合初学者了解C语言编译过程。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入 C 语言和程序运行原理》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • 李慧文
    居然在这里见到了海纳老师,凡代码存在处,皆可学“海”课~太棒了~
    2022-03-14
    3
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部