ARM汇编语言中的程序结构(续)

来源:互联网 发布:java工程发布到tomcat 编辑:程序博客网 时间:2024/06/05 07:01

伪指令

ARM汇编语言源程序中有些特殊助记符,它们没有相对应的操作码或者机器码,通常称为伪指令,它们所完成的操作称为伪操作。 

伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,由汇编程序在源程序的汇编期间进行处理,仅在汇编过程中起作用。 

ARM的汇编程序中,有如下几种伪指令: 

符号定义伪指令 

数据定义伪指令 

汇编控制伪指令 

信息报告伪指令 

宏指令以及其他伪指令 

符号定义伪指令 

作用:用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等。

符号定义有如下几种伪指令: 

用于定义局部变量的LCLALCLLLCLS 

用于定义全局变量的GBLAGBLLGBLS

用于对变量赋值的SETASETLSETS 

为通用寄存器列表定义名称的RLIST

数据定义伪指令 

作用:为数据分配存储单元,同时初始化。 

有如下几种: 

DCB 字节分配 

DCW/DCWU 半字(2字节)分配 

DCD/DCDU 字(4字节)分配 

DCQ/DCQU 8个字节分配 

DCFS/DCFSU 单精度浮点数分配 

DCFD/DCFDU 双精度浮点数分配 

SPACE 分配一块连续的存储单元 

FIELD 定义一个结构化的内存表的数据域 

MAP 定义一个结构化的内存表首地址 

汇编控制伪指令 

作用:指引汇编程序的执行流程。 

常用的伪操作包括: 

1MACROMEND:宏定义的开始与结束。 

2IFELSEENDIF:根据逻辑表达式的成立与否决定是否在编译时加入某个指令序列。 

3WHILEWEND:根据逻辑表达式的成立与否决定是否循环执行这个代码段。 

4MEXIT:从宏中退出。 

宏定义伪指令 

程序中调用该宏exam jump sub,det ;调用宏jump,宏的标号为exam,参数1sub,参数2det 

程序被汇编后,宏的展开结果: 

… 

examloop1 

… 

BGE examloop1 

examloop2 

BL sub 

BGT examloop2 

ADR det 

IFELSEENDIF 

格式: 

IF 逻辑表达式 

代码段

ELSE 

代码段

ENDIF 

说明:能根据逻辑表达式的成立与否决定是否在编译时加入某个指令序列。 IFELSEENDIF分别可以用“[”“|”“]”代替。如果IF后面的逻辑表达式为真,则编译代码段1,否则编译代码段2ELSE及代码段2也可以没有,这时,当IF后面的逻辑表达式为真时,则代码段1,否则继续编译后面的指令。 

1 0
原创粉丝点击