资源描述:
《arm汇编语言的语法知识.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ARM汇编语言的语法知识ARM汇编语言语句格式ARM汇编语言的语句格式:{symbol}{instruction
2、directive
3、pseudo-instruction}{comment}其中:instruction为指令。在ARM汇编语言中,指令不能从一行的行头开始.在一行语句中,指令的前面必须有空格或符号.directive为伪操作。pseudo-instruction为伪指令。symbol为符号。在ARM汇编语言中,符号必须从一行的行头开始,并且符号中不能包含空格,在指令和伪指令中符号用作地址标号,在有些伪操作中,符号用作变量或者常
4、量.comment为语句的注释.在ARM汇编语言中注释以分号”;”开头.注释的结尾即为一行的结尾,注释也可以单独占用一行.5.1.ARM汇编语言的伪操作、宏指令和伪指令ARM汇编语言源程序中语句一般由指令、伪操作、宏指令和伪指令组成.伪操作是ARM汇编语言程序里的一些特殊指令助记符,其作用主要是为完成汇编程序做各种准备工作,在源程序进行汇编时由汇编程序处理,而不是在计算机运行期间由机器执行.也就是说,这些伪操作只在汇编过程中起作用,一旦汇编结束,伪操作的使命也就随之结束.5.1.ARM汇编语言的伪操作、宏指令和伪指令ARM汇编语言源程序中语
5、句一般由指令、伪操作、宏指令和伪指令组成.宏指令是一段独立的程序代码,可插在源程序中,它通过伪操作来定义.宏在被使用前必须提前定义好,宏之间可互相调用,也可自己递归调用.通过直接书写宏名来使用宏,并根据宏指令的格式设置相应的输入参数.这与C语言中子函数形参与实参的传递很相似.5.1.ARM汇编语言的伪操作、宏指令和伪指令ARM汇编语言源程序中语句一般由指令、伪操作、宏指令和伪指令组成.伪指令也是ARM汇编语言程序里的一些特殊指令助记符,它们不是真正的ARM指令或Thumb指令,也不在计算机运行期间由机器执行,而是在源程序进行汇编时被替换成相
6、应的ARM指令或Thumb指令序列,从而实现真正的指令操作.5.1.ARM汇编语言的伪操作、宏指令和伪指令ARM汇编语言源程序中语句一般由指令、伪操作、宏指令和伪指令组成.伪操作和宏指令一般与编译程序有关,在不同的编译环境下有不同的编写形式和语法规则.常见的ARM编译开发环境有2种:ARM公司开发的ADS/SDTIDE开发环境集成了GNU开发工具的IDE开发环境ARM汇编语言伪指令ARM伪指令ARM伪指令不属于ARM指令集中的指令,是为了编程方便而定义的。伪指令可以像其它ARM指令一样使用,但在编译时这些指令将被等效的ARM指令代替。ARM
7、伪指令有四条,分别为ADR伪指令、ADRL伪指令、LDR伪指令、NOP伪指令。ARM伪指令——小范围的地址读取ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。ADR{cond}register,exprADR伪指令格式指令执行的条件码加载的目标寄存器地址表达式地址表达式expr的取值范围:当地址值不是字对齐时,其取值范围为-255
8、~255字节;当地址值是字对齐时,其取值范围为-1020~1020字节;当地址值是16字节对齐时,其取值范围将更大;该地址必须与ADR伪指令在同一个代码段中。ARM伪指令——中等范围的地址读取ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。ADRL{cond}register,exprADRL伪指令格式指令执行的条件码加载的目标寄存器地址表达式地址表达式e
9、xpr的取值范围:当地址值不是字对齐时,其取值范围为-64K~64K;当地址值是字对齐时,其取值范围为-256K~256K;当地址值是16字节对齐时,其取值范围将更大;该地址必须与ADRL伪指令在同一个代码段中。ARM伪指令——大范围的地址读取LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池(即数据缓冲区),并使用一条基于PC相对偏移的LDR指令从文字池读出该
10、常量。LDR{cond}register,=exprLDR伪指令格式指令执行的条件码加载的目标寄存器基于PC的地址表达式或外部表达式ARM伪指令——大范围的地址读取LDR伪指令用