less than 1 minute read

Slides

笔记

  • 预处理: 主要是文本替换, #include, #define等; 其他还有去除注释, 条件编译(#ifdef等), 字符串拼接等.
  • 编译
    • 词法分析: 识别token与位置, 本质文本匹配.
    • 语法分析: 根据C语法把token组织成AST.
    • 语义分析: 确定AST中每个表达式类型, 处理类型转换, 语义错误等.
    • 中间代码生成: 编译场景的指令集.
    • 优化: 在保证程序的可观测行为一致性的条件下, 对中间代码进行优化.
    • 目标代码生成: 中间代码翻译成目标指令集.
  • 汇编: 汇编代码翻译成二进制目标文件.
  • 连接: 合并多个目标文件, 生成可执行文件.
  • C标准除了明确定义的行为, 还有
    • Unspecified Behavior: 提供多种行为由实现选择.
    • Implementation-defined Behavior: 环境进行规定(写进文档), 包括编译器+(操作系统+库函数), 即ABI(Application Binary Interface).
    • Undefined Behavior: 不符合标准的行为.

Tags:

Categories:

Updated:

Comments