06 知识点梳理:计算机基础

1:预编译:主要处理以“#”开始的预编译指令。

2:编译:

  • 词法分析:将字符序列分割成一系列的记号。

  • 语法分析:根据产生的记号进行语法分析生成语法树。

  • 语义分析:分析语法树的语义,进行类型的匹配、转换、标识等。

  • 中间代码生成:源码级优化器将语法树转换成中间代码,然后进行源码级优化,比如把 1+2 优化为 3。中间代码使得编译器被分为前端和后端,不同的平台可以利用不同的编译器后端将中间代码转换为机器代码,实现跨平台。

  • 目标代码生成:此后的过程属于编译器后端,代码生成器将中间代码转换成目标代码(汇编代码),其后目标代码优化器对目标代码进行优化,比如调整寻址方式、使用位移代替乘法、删除多余指令、调整指令顺序等。

3:汇编:汇编器将汇编代码转变成机器指令。

  • 静态链接:链接器将各个已经编译成机器指令的目标文件链接起来,经过重定位过后输出一个可执行文件。

  • 装载:装载可执行文件、装载其依赖的共享对象。

  • 动态链接:动态链接器将可执行文件和共享对象中需要重定位的位置进行修正。

  • 最后,进程的控制权转交给程序入口,程序终于运行起来了。

Last updated