首页 理论教育 ARM体系结构ADR伪指令简介

ARM体系结构ADR伪指令简介

时间:2023-10-19 理论教育 版权反馈
【摘要】:如果不能用一条指令实现ADR伪指令的功能,ARM汇编器将报告错误。start的地址是相对于PC-8-4=PC-12=PC-0x0C,所以本ADR伪指令将被编译器替换成“SUB r4,PC,#0x0C”。

ARM体系结构ADR伪指令简介

1.语法格式

ADR伪指令为小范围地址读取伪指令。ADR伪指令将基于PC相对偏移地址或基于寄存器相对偏移地址值读取到寄存器中,其取值范围如下:

(1)当地址值不是字节对齐时,取值范围为-255~255字节。

(2)当地址值是字对齐时,取值范围为-1 020~1 020字节。

(3)当地址值是16字节对齐时其取值范围更大。

其语法格式如下:

(1){cond}:可选的指令执行条件。

(2){.W}:可选项,指定指令宽度(Thumb-2指令集支持)。

(3)register:目标寄存器。(www.xing528.com)

(4)label:基于PC或具体寄存器的表达式。

2.使用说明

ADR伪指令被ARM汇编器编译成一条指令。ARM汇编器通常使用ADD指令或SUB指令实现伪操作的地址装载功能。如果不能用一条指令实现ADR伪指令的功能,ARM汇编器将报告错误

3.示例

1)示例1

程序在运行到“ADR r4,start”时,由于ARM为3级流水线架构,此时PC=执行地址+8,而start是在该条指令的前面,所以此时该条指令的目的是读取start相对于PC的地址。start的地址是相对于PC-8-4=PC-12=PC-0x0C,所以本ADR伪指令将被编译器替换成“SUB r4,PC,#0x0C”。

2)示例2

程序在运行到“ADR r4,start”时,PC=执行地址+8,而start此时紧跟在这条指令的后面,所以start的地址是“执行地址+4”,即相对于PC,start的地址为PC-4,所以本ADR伪指令将被编译器替换成“SUB r4,PC,#0x04”。

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

我要反馈