什么是汇编语言?
汇编语言是为特定的计算机设计的面向机器的符号化的程序设计语言。用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。
基本组成
汇编语言源程序主要由若干语句组成,主要的3类语句是:
-
指令语句:机器指令语句,将其汇编后能产生相应的机器代码,这些代码被CPU直接识别并执行相应的操作。基本指令有:ADD、SUB、AND
-
伪指令语句:指示汇编程序在汇编源程序时完成某些工作:该程序如何分段、有哪些逻辑段在程序中、哪些是当前段、分别由哪个寄存器指向....
-
宏指令语句:多次重复使用程序段定义为宏,而宏指令是对宏的引用。
注意:伪指令不产生机器代码;
汇编程序
提到汇编语言,不得不说汇编程序,它是将用汇编语言编写的源程序翻译成机器指令程序。计算机一般不能直接识别汇编语言,但是经过汇编程序编译成机器指令之后即可识别。 汇编程序一般需要两次扫描源程序才能完成翻译过程,第一次扫描时定义符号的值并创建一个符号表ST,记录汇编所遇到的符号值。第二次扫描是产生目标程序,将可执行的汇编语言翻译成对于的二进制代码机器指令。
汇编语言的编译过程:
词法分析:编译的第一个阶段,单词符号是基本语法单位,词法分析会对源程序从前到后逐个字符地扫描,从而识别出一个个”单词“符号,称为记号。简单来说:输入源程序(字符流),产生记号流
语法分析:根据语法规则将单词符号序列分解成各类语法单位,这个阶段的输入是记号流,输出是抽象语法树(或分析树)。
词法和语法分析在本质上都是对源程序的结构进行分析
语义分析:分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。主要的一个工作是进行类型分析和检查
只有语法和语义都正确的源程序才能翻译成正确的目标代码
中间代码生成:根据语义分析的输出生成,与具体的机器无关。最常用的一种中间代码是与汇编语言的指令非常相似的三地址码,实现方式采用四元式
语义分析和中间代码生成所依据的是语言的语义规则
代码优化:可在中间代码阶段优化,也可在目标代码生成阶段进行。 优化一般建立在对程序的控制流和数据流分析的基础之上,与具体的机器无关
目标代码的生成:将中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码