这两个都是伪指令:adr是小范围的地址读取伪指令,ldr是大范围的读取地址伪指令。可实际上adr是将基于PC相对偏移的地址值或基于寄存器相对地址值读取的为指令,而ldr用于加载32为立即数或一个地址到指定的寄存器中。到这儿就会看到其中的区别了。如果在程序中想加载某个函数或者某个在联接时候指定的地址时请使用adr,例如在lds中需要重新定位的地址。当加载32为的立即数或外部地址时请用ldr。
我给大家先举个例子:
AREA test,CODE,READONLY
本文详细解析了ARM汇编中的adr和ldr指令及ldr伪指令,通过实例展示了它们在代码中的表现和区别。ldr从内存加载数据,adr获取标号的地址,而ldr=加载文字池中的常数值。adr生成的代码依赖位置,ldr则取得标号的绝对地址。
3606

被折叠的 条评论
为什么被折叠?