首页 理论教育 ARM汇编控制伪操作技巧

ARM汇编控制伪操作技巧

时间:2023-10-19 理论教育 版权反馈
【摘要】:汇编控制伪操作用于控制ARM汇编程序的执行流程,常用的汇编控制伪操作包括以下几条。首先通过.macro和.endm伪操作定义宏,包括宏定义体代码。在.macro伪操作之后的第1行声明宏的原型,其中包含该宏定义的名称及需要的参数。

ARM汇编控制伪操作技巧

汇编控制伪操作用于控制ARM汇编程序的执行流程,常用的汇编控制伪操作包括以下几条。

1..if、.else、.endif

1)语法格式

.if、.else、.endif伪操作能根据条件的成立与否决定是否执行某个指令序列。当.if后面的逻辑表达式为真时,则执行.if后的指令序列,否则执行.else后的指令序列。其中,.else及其后的指令序列可以没有,此时,当.if后面的逻辑表达式为真时,则执行指令序列,否则继续执行后面的指令。

提示:.if、.else、.endif伪操作可以嵌套使用。该伪操作的行为跟C语言中的if、else类似。

其语法格式如下:

其中logical-expressing是用于决定指令执行流程的逻辑表达式。

2)使用说明

若程序中有一段指令需要在满足一定条件时执行,使用该伪操作。该伪操作还有另一种形式:

该形式避免了if-else形式的嵌套,使程序结构更加清晰、易读。

3)示例

编译器编译该段代码的结果是:

2..while、.wend

1)语法格式

.while、.wend伪操作能根据条件的成立与否决定是否执行某个指令序列。当.while后面的逻辑表达式为真时,则执行指令序列,该指令序列执行完毕后,再判断逻辑表达式的值,若为真则据继续执行,一直到逻辑表达式的值为假。

提示:.while、.wend伪操作可以嵌套使用。该伪操作跟C语言中的while循环类似。

其语法格式如下:

2)示例(www.xing528.com)

编译器编译该段代码的结果是:

3..macro、.endm

1)语法格式

.macro伪操作可以将一段代码定义为一个整体,称为宏指令,然后就可以在程序中通过宏指令多次调用该段代码。其中,$标号在宏指令被展开时,会被替换为用户定义的符号。

宏操作可以使用一个或多个参数,当宏操作被展开时,这些参数被相应的值替换。宏操作的使用方式和功能与子程序相似,子程序可以提供模块化的程序设计、节省存储空间并提高运行速度。在使用子程序结构时需要保护现场,从而增加了系统的开销,因此,在代码较短且需要传递的参数较多时,可以使用宏操作代替子程序。

包含在.macro和.endm之间的指令序列称为宏定义体,在宏定义体的第1行应声明宏的原型(包含宏名、所需的参数),然后就可以在ARM汇编程序中通过宏名来调用该指令序列。在源程序被编译时,汇编器将宏调用展开,用宏定义中的指令序列代替程序中的宏调用,并将实际参数的值传递给宏定义中的形式参数

提示:.macro、.endm伪操作可以嵌套使用。

2)使用说明

在子程序代码比较短,而需要传递的参数比较多的情况下可以使用宏汇编技术。

首先通过.macro和.endm伪操作定义宏,包括宏定义体代码。在.macro伪操作之后的第1行声明宏的原型,其中包含该宏定义的名称及需要的参数。在汇编中可以通过该宏定义的名称调用它。当源程序被编译时,汇编器将展开每个宏调用,用宏定义体代替源程序中宏定义的名称,并用实际参数值代替宏定义时的形式参数。

3)示例

4..mexit

1)语法格式

.mexit用于从宏定义中跳转出去。

2)用法

只需要在宏定义的代码中插入该伪操作即可。

3)示例

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈