19_编译过程简介

关键词:初识编译器、预处理、编译、汇编

1. 初识编译器

广义上的编译器由:预处理器、编译器、汇编器、链接器组成。

2. 预处理

  • 处理所有的注释,以空格代替
  • 将所有的#define删除,并展开所有的宏定义
  • 处理条件编译指令#if, #ifdef, #elif, #else, #endif
  • 处理#include,展开被包含的文件
  • 保留编译器需要使用的#pragma指令
  • 预处理指令示例:gcc -E file.c -o file.i

3. 编译

  • 对预处理文件进行词法分析语法分析语义分析
  • 词法分析:分析关键字,标识符,立即数等是否合法
  • 语法分析:分析表达式是否遵循语法规则
  • 语义分析:在语法分析的基础上进一步分析表达式是否合法
  • 分析结束后进行代码优化生成相应的汇编代码文件
  • 编译指令示例:gcc -S file.c -o file.s

4. 汇编

  • 汇编器将汇编代码转变为机器的可执行指令
  • 每条汇编语句几乎对应一条机器指令
  • 汇编指令示例:gcc -c file.s -o file.o

5. 小结

  • 编译过程分为:预处理编译汇编链接四个阶段
  • 预处理:处理注释以及以#开头的符号
  • 编译:进行词法分析语法分析语义分析
  • 汇编:将汇编代码翻译成机器指令的目标文件

声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!