Chinaunix首页 | 论坛 | 博客
  • 博客访问: 741438
  • 博文数量: 104
  • 博客积分: 4320
  • 博客等级: 上校
  • 技术积分: 1948
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-30 14:42
文章分类

全部博文(104)

文章存档

2012年(4)

2011年(65)

2010年(35)

分类: LINUX

2010-09-06 12:56:10

将相对于程序或相对于寄存器的地址载入寄存器中。 与 ADR 指令相似。ADRL 生成两个数据处理指令,因此它比 ADR 加载的地址范围要宽。

Note

在为 Thumb-2 之前的处理器汇编 Thumb 指令时,不能使用 ADRL。

语法

ADRL{cond} Rd,label

其中:

cond

是一个可选的条件代码(请参阅)。

Rd

是要加载的寄存器。

label

是相对于程序或寄存器的表达式。 有关详细信息,请参阅。

用法

ADRL 始终汇编为两个 32 位指令。 即使使用单个指令就可完成地址访问,也会生成多余的第二个地址。

如果汇编器无法将地址构建为两个指令,则它将生成一条错误消息,汇编将失败。 有关加载更宽范围地址的信息,请参阅(另请参阅)。

ADRL 可生成与位置无关的代码,因为地址相对于程序或寄存器。

如果 label 相对于程序,则它必须计算为与 ADRL 伪指令处于同一汇编器区域内的地址,请参阅。

如果使用 ADRL 来为 BX 或 BLX 指令生成目标,则当目标中包含 Thumb 指令时,您就要自己设置地址的 Thumb 位(位 0)。

体系结构和范围

可用范围取决于所用的指令集:

ARM

±64KB,字节或半字对齐的地址。

±256KB 字节,字对齐地址。

32 位 Thumb

±1MB 字节,字节、半字或字对齐地址。

16 位 Thumb

ADRL 不可用。

上面给出的范围是相对于位于当前指令地址后的、距离当前指令四个字节(在 Thumb 代码中)或两个字(在 ARM 代码中)远的点而言的。如果对齐为 16 字节,或与此点的相关性更高,则远程地址的范围可更大。

阅读(18358) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-08 10:16:06

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com