[英]What does an equals sign = on the right side of a LDR instruction in ARM mean?
[英]What does the hash (#) value associated with the ARM LDR instruction mean?
我正在嘗試調試我在應用程序中遇到的崩潰。 堆棧跟蹤指向具有以下格式的LDR指令(感謝反匯編程序):
LDR R3, [R0,#4]
我的問題是關於源組件。 第二個參數中的#4是什么意思? 我假設它是某種偏移量,但我沒有找到支持LDR指令的文檔。
它從R0 + 4字節的地址加載R3。 所以,是的,它是一個字節偏移量。 請參閱尋址模式的此說明 。
它將R0中的值加4,並將其用作將32位值加載到寄存器R3中的地址
在GNU gas中,僅當不使用.syntax unified
時,僅對ARMv7需要散列#
例如,您可以在沒有#
的情況下為ARMv8 aarch64-linux-gnu-as
編寫它:
LDR x0, [x0,4]
或者如果在arm-linux-gnueabihf-as
.syntax unified
使用.syntax unified
arm-linux-gnueabihf-as
:
.syntax unified
LDR x0, [x0,4]
更多詳細信息: ARM程序集中的立即值是否需要哈希值?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.