编译原理-一个语言的编译流程
2018-02-09 本文已影响4人
xinhy
相关概念
编译器:可以阅读以某种语言(源语言)编写的程序,并把该程序翻译成一个等价的,用另一种语言编(目标语言)写的程序.编译器的重要任务之一是报告它在翻译过程中发现的源程序的错误.
解释器:它并不通过翻译的方式生成目标程序.从用户的角度看,解释器直接利用用户提供的输入执行源程序指定的输入.
一个语言的编译流程
一个源程序可以分为多个模块,并存放于独立的文件中.把源程序聚合一起的任务有时会被预处理器的程序多里完成.预处理器还会将宏的缩写形式转换为源语言的语句.
然后,将预处理的源程序作为输入传递给一个编译器.编译器可能产生一个汇编语言成为它的输出,因为汇编语言比较容易输出和调试.接着这个汇编语言由汇编器进行处理,并生成可重定位的机器代码.
大型程序通常被分成多个部分进行编译,因此可重定位的机器代码有必要和其他重定位的目标文件以及库文件连接到一起,形成真正在机器上运行的代码.一个文件中的代码可以指向另外一个文件中的位置,而链接器能够解决外部内存地址的问题.最后,加载器把所有的执行目标文件加载到内存中执行.
整个过程如下图.