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

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

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

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

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


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


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

将源语言变成目标语言的过程要经历四个步骤:预处理–> 编译 --> 汇编 --> 链接
  预处理过程由预处理器完成,他把储存在不同文件中的源程序聚合在一起,把成为宏的缩写语句变成原始语句

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

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

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


  编译系统的结构:
编译器的结构分为分析部分(和源语言有关)和综合部分(和目标语言有关)
编译结构
后期会详细说明这些过程

发布了62 篇原创文章 · 获赞 20 · 访问量 5799

猜你喜欢

转载自blog.csdn.net/weixin_44415928/article/details/104349788