簡體   English   中英

[R0,R3]在匯編中做了什么?

[英]What does [R0,R3] do in Assembly?

我是大會的初學者,我已經在網上搜索了這個問題,但無濟於事......

最近我一直試圖反匯編用於特定Android應用程序的庫。 用IDA Pro拆解后,我遇到了這個子程序:

MOVS    R3, 0x1AC
LDR     R0, [R0,R3]
BX      LR

我理解這3行中發生的大部分事情,但我堅持認為

LDR     R0, [R0,R3]

這條線究竟做了什么? 是否將R0設置為R0偏移R3的值?

LDR R0,[R0,R3]
這條線究竟做了什么

R3用作基址( R0 )的偏移量。 換句話說,有效地址是R0+R3從該地址加載的值被寫入R0
請參閱LDR / STR的文檔

不僅使用LDR R0,[R0,#0x1AC]原因可能是這是Thumb代碼。 Thumb模式下LDR/STR的立即偏移量僅為7位 (5位向左移位2位),0x1AC不適合7位。 因此,偏移首先放在寄存器中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM