一个典型程序的转换处理过程:
1.预处理
处理源文件以“#”开头的预编译指令,包括:
——处理“#define”并展开所定义的宏
——处理所有条件预编译指令,如“#if”等
——插入头文件到“#include”处,以递归方式进行处理
——添加行号和文件名标识,以便编译时编译器产生调试用的行号信息
——保留所有的#pargma编译指令(编译器要用)
2.编译:
编译过程就是将预处理后得到的预处理文件进行语法分析、词法分析、语义分析、优化后,生成汇编代码文件。经过编译后,得到的汇编代码文件还是可读的文本文件,cpu无法理解和执行它
3.汇编
汇编程序用来将汇编语言源程序转换为机器指令序列(机器语音程序)。
汇编指令和机器指令一一对应,前者是后者的符号表示,他们都属于机器级指令,所构成的程序都称为机器级代码
汇编结果是一个可重定位目标文件,其中包括的是不可读的二进制代码,必须用相应的工具软件来查看其内容
4.链接
链接过程是将多个可重定位目标文件合并以生成可执行目标文件