编译原理 (一) 编译和编译系统的结构

简介: 编译原理 (一) 编译和编译系统的结构

 我们知道计算机设计语言有机器语言、汇编语言和高级语言之分。


 机器语言 则是给计算机看的语言,比如C706 0000 0002. 前边的C706是该机器指令的操作码,表示移动操作(move),后边的0000 0002表示操作数,表示把0002这个数移动到地址0000的位置。 可以发现简直不是人学的东西,全都是数字。


 汇编语言 在机器语言的基础上,添加了助记符,使得代码十分容易让人理解,比如mov x, 2表示把2移入到x表示的这个地址去,相比机器语言十分容易理解。 汇编语言依赖于特定的机器,使得非计算机专业技术人员使用受限制,而且开发效率依旧很低。


 高级语言 高级语言就是我们日常熟悉的C语言,C++,Java, Python等高级语言,x = 2就可以完成赋值操作,他符合人类的表达习惯,不依赖于特定的机器,而且开发效率很高,至今广泛传用。



  高级语言和汇编语言最终都要被翻译成机器语言才能在计算机上运行,汇编语言翻译成机器语言的过程叫做汇编



  高级语言翻译成汇编语言或者机器语言的过程叫做编译, 编译过程中我们把高级语言称作源语言,汇编语言和机器语言称作目标语言


将源语言变成目标语言的过程要经历四个步骤:预处理–> 编译 --> 汇编 --> 链接

 预处理过程由预处理器完成,他把储存在不同文件中的源程序聚合在一起,把成为宏的缩写语句变成原始语句


 编译 由编译器完成该部分工作,工作机制就是上述的过程


 汇编 汇编器完成,用于生成可重定位的机器代码(可重定位 即在内存中存放的位置不是固定不变的)


 链接 由连接器和加载器完成,加载器用于修改可重定位的代码,将修改后的指令和数据放在内存中适当位置,连接器则是将代码与库文件或者其他可重定位目标程序进行连接,生成可执行代码



 编译系统的结构:

编译器的结构分为分析部分(和源语言有关)和综合部分(和目标语言有关)

后期会详细说明这些过程

相关文章
|
IDE Unix 编译器
关于编译的重要概念总结
关于编译的重要概念总结
3391 0
关于编译的重要概念总结