1、会编语言的元代码转换成本地代码的方式称为汇编 2、本地代码转换成汇编语言的源代码的方式称为反汇编
本地代码的指令中表示其功能的英文缩写称为助记符,而使用助记符的编程语言称为会编语言,通过查看会编语言编写的源代码就可以了解程序的本质。负责转换工作的程序称为汇编器,转换这一处理本身称为汇编。而在源代码转换成本地代码这个功能方面,汇编器和编译器是同样的。 我们还应知道用汇编语言编写的源代码和本地代码是一一对应的,因此本地代码也可以反过来转换成汇编语言的源代码该功能的逆变换程序称为反汇编程序,逆变换这一处理本身称为反汇编,我们还可以通过编译器输出会边缘的源代码。既然我们知道了汇编语言的源代码这一名词,那么到底什么是汇编语言的源代码呢?它就是由转换成本地代码的指令和针对汇编器的伪指令构成的。在这里伪指令的作用是负责把程序的构造及汇编的方法指示给汇编器,而伪指令在程序中围起来的部分是给构成程序的命令和数据的集合体,加上的一个名字而得到的,称为段定义。在程序中定义指的是命令和数据等程序的集合体的意思程序有多个段定义构成。
汇编语言指令的语法结构是"操作码+操作数"(也存在只有操作码没有操作数的指令),其中操作码表示的是指令动作,操作数表示的是指令对象,因为汇编语言中存在多个操作数的情况,因此要用逗号把它们隔开。又因为操作码的形式很多,因此用何种操作码要CPU的种类决定。下图是一些汇编语言指令的功能:
此外,我们还需要了解CPU中的寄存器不仅仅具有存储指令和数据的功能,也有运算的功能,下图是一些寄存器的名称及主要功能:
而且在函数定义局部变量时所需要内存领域会被尽可能的分配在既存器中。因为与内存相比,使用既存器时访问速度会高很多,这样就可以更快的进行处理。局部变量利用寄存器是Borland C++编译器最优化的结果。
而对寄存器和内存进行数据存储的是mov指令,这一指令的两个操作数分别用来指定数据的存储和读出源。
回顾:数据在栈中存储时,从内存的下层逐渐往上层累积读的时候是从上往下顺利进行的。 栈是存储临时数据的区域,其特点是通过push指令和pop指令进行数据的存储和读出。
最优化功能是编译器在本地代码上费尽工夫实现的目的是让编译后的程序运行速度更快文件更小。
函数的参数是通过栈来传递的返回值是通过寄存器来返回的。
C语言中在函数外部定义的变量称为全局变量,在函数内部定义的变量称为局部变量。其中全局变量可以参阅源代码的任意部分,而局部变量只能在定义该变量的函数数内进行参阅。那么为什么局部变量只能在定义该变量的函数内进行参阅呢?是因为局部变量是临时保存在寄存器和栈中的。