标签:
1. 预编译:主要处理源文件中的以#开始的预编译指令。 (经过预编译后的.i文件不包含任何宏定义,因为所有的宏已经被展开,并且包含的文件也已经被插入到.i文件中)
2. 编译:编译过程就是把预处理完的文件进行一系列词法分析、语法分析、语义分析以及优化后生成相应的汇编代码文件。
3. 汇编:汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。所以汇编过程相对比较简单,它没有复杂的语法,也没有语义,也不需要做指令优化,只是根据汇编指令和机器指令的对照表一一翻译就可以了。
4. 链接:在一个程序被分割成多个模块以后,这些模块之间如何组合成一个单一的程序是需要解决的一个问题。模块之间如何组合的问题可以归结为模块之间如何通信的问题,最常见的属于静态语言的C/C++,模块之间通信有两种方式,一种是模块间的函数调用,另外一种是模块间的变量访问。函数访问需要知道目标函数的地址,变量访问也需要知道目标变量的地址所以这两种方式可以归结为模块间符号的引用。这个模块的拼接过程就是连接。
其实链接器就是把一些指令对其他符号地址的引用加以修正。链接过程蛀牙包括地址和空间分配,符号决议和重定位等
标签:
原文地址:http://www.cnblogs.com/java-cjt/p/4448848.html