嵌入式软件设计嵌入式软件设计(3)--ARM程序设计程序设计
ARM汇编语言的伪操作、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、宏指令和伪指令构成。
其中,伪操作是指ARM汇编程序中的助记符,在源程序转变为汇编程序的时候被处理,而不是在计算机运行期间被程序执
行;宏指令是一段独立的程序代码,通过伪操作进行定义,可以进行宏替换,其仅仅在调用时用宏体插入到源程序中;伪指令
也是一种特殊的指令助记符,但是其不是在处理器运行期间由及其运行,而是在汇编时被转换为合适的机器指令替换为ARM
或者Thumb指令,从而实现真正的指令操作。
ADS编译环境下的伪操作和伪指令
相关内容属于手册的部分,因此需要时查阅相关手册即可。
ARM伪指令
ARM伪指令是为了编程的方便而设计出来的一种指令,其可以在源程序进行汇编时将相关指令转变为等效的ARM指令。
ARM伪指令共有四条,分别为ADR伪指令、ADRL伪指令、LDR伪指令、NOP伪指令。
ADR伪指令
通常,编译器通过一条ADD指令或者SUB指令来实现ADR伪指令的功能。若不能够用一条指令实现,则产生错误,编译失
败。
其格式大致与ADD指令或者是SUB指令相同。
ADRL伪指令
其与ADR最大的区别是ADRL有更大的地址读取能力。其他都是相似的。因此,一条ADRL指令可能需要多条SUB或者ADD指
令才能完成。因为ARM指令的第二操作数的地址范围比ADRL取址范围小。
LDR伪指令
LDR伪指令用于加载32位的立即数或者一个地址到指定寄存器。在汇编编译源程序时,LDR伪指令被编译器替代为一条合适
的指令。若加载的常数未超出MOV或者MVN的范围,则使用MOV或者MVN指令代替该LDR伪指令,否则汇编器将常量放入文
字池,并使用一条程序相对偏移的LDR指令从文字池中读出常量。
与ARM指令的LDR相比,伪指令的LDR的参数中有=号存在。
NOP伪指令
NOP伪指令的重要功能是用于延时操作。其在汇编时被代替成ARM中的空操作。例如MOV R1,R1 等。
ARM汇编语言程序设计
ARM汇编中的文件格式
ARM程序源文件主要有三种格式,具体的情况说明如下:
ARM汇编语言语句格式
值得注意的是,ARM汇编语言中的最开头是符号,接着是指令|伪操作|伪指令,末尾处可以添加注释。
只要将任何指令放在开头,ARM汇编都会认为其为符号。