我在第十章通过汇编语言了解了程序的实际构成。汇编语言是通过利用助记符来记述程序的。使用汇编器这个工具来进行汇编,通过反汇编,得到人们可以理解的代码。在高级编程语言的源代码中,即使指令和数据在编写时是分散的编译后也会在段定义中集合汇总起来。在汇编语言中,通过跳转指令,可以实现循环和条件分支。汇编语言和本地代码是一一对应的。在个本地代码中,附带上表示其功能的英语单词缩写。例如,在加法运算的本地代码中加上add,在比较运算的本地代码中加上cmp等。这些缩写称为助记符,使用助记符的编程语言成为汇编语言。即使是用汇编语言编写的源代码,最终也必须转换成本地代码才能运行。负责转换工作的程序称为汇编器,转换这一处理本身称为汇编。在将源代码转换成本地代码这个功能方面,汇编契合编译器是同样的。用汇编语言编写的源代码,和本地代码是一一对应的。因而,本地代码也可以反过来转换成汇编语言的源代码。持有该功能的逆变换程序称为反汇编程序,逆变换这一处理本身称为反汇编。如图
通过编译器输出汇编语言的源除了将本地代码进行反汇编这一方法外,通过其他方式也可以获取汇编语言的源代码。大部分C语言编译器,都可以把利用C语言编写的源代码转换成汇编语言的源代码,而不是本地代码。汇编语言的语法是“操作码+操作数”,操作码表示的是指令动作,操作数表示的是指令对象。操作码和操作数罗列在一起的语法,就是一个英文的指令文本。操作码是动词,操作数相当于宾语。能够使用何种形式的操作码,是由CPU的种类来决定的。本地代码加载到内存后才能运行,内存中存储着构成本地代码的指令和数据。程序运行时,CPU会从内存中把指令和数据读出,然后再将其存储在CPU内部的寄存器中进行处理。