接触过编程的人对“汇编”,“解释”和“编译”三个名词一定不陌生,但要是详细区分起来,大多数人还是比较糊的,今天我就来谈谈这三个东西。
首先,来研究一下什么是编程。
和许多成型的技术或理论一样,编程也分广义编程和狭义编程。广义编程比较复杂,留作以后再详细研究,这里只谈谈与本文有关的狭义编程,也就是计算机指令编码。这种编程很好理解,学过计算机二级的人印像最深的就是写一段代码,然后以各种形式输出一些符号,用的最多的也是所有语言都有的print语句吧。但计算机本身只认识0和1,并不认得print是个什么东西,所需要一个“翻译”,把print翻译成01序列,计算机才会明白,下面来详细说说从高级语言代码到计算机执行的整个过程吧。
- 高级语言就是现代软件开发中所使用的类自然计算机编程语言,如BASIC, C, Java等。
- 这些语言的源代码首先要转化易于处理的临时数据结构,也叫作“中间代码”。
- 中间代码再一次处理后,生成了一种叫做“目标文件”的文件。目标文件可能是一种叫做“汇编代码”的东西,也可能是另外一种语言的源文件。
- 以上2-3步经过一次或多次反复之后,最终生成了汇编代码。
- 汇编器将汇编代码汇翻译成计算机可识别的01机器码。
- 但是光有机器码还是不够的,因为程序中有API(应用程序接口)调用,也就是程序要求操作系统做的一些事情,比如print语句一次会要求操作系统去操作显示器,这就是一种API调用。所以,链接器这时出来工作了。它把程序要求的API找出来并将地址等必要信息写入程序机器码中,这个过程叫做“链接”。
- 经过链接的机器码,就可以安心地交给计算机中央处理器( CPU)了。
- 中央处理器接到机器码指令后,会将机器码指令交与指令解码器,它的工作就是根据当前机器指令,去它自己的记忆库中找出配匹的一系列微码,交给处理器。
- 微码就是记录处理器中数据处理完整过程的指令,也就是说,这才是计算机真真正正能够识别读取的一种
