0
我正在從庫文件中學習ARM彙編。我正在瀏覽一些隨機函數,並發現這些加載指令,我不明白它們的語法。ARM彙編中的LDRMIB
這裏是:
LDRMIB R1, [R5, R3]
LDRMIB.W R2, [R2, #-0x24]
LDRPLB.W R1, [R2, #-0x24]
LDRPLB R2, [R5, R3]
什麼是從原始LDR指令的區別是什麼?
由於提前
我正在從庫文件中學習ARM彙編。我正在瀏覽一些隨機函數,並發現這些加載指令,我不明白它們的語法。ARM彙編中的LDRMIB
這裏是:
LDRMIB R1, [R5, R3]
LDRMIB.W R2, [R2, #-0x24]
LDRPLB.W R1, [R2, #-0x24]
LDRPLB R2, [R5, R3]
什麼是從原始LDR指令的區別是什麼?
由於提前
您正在尋找與前UAL語法的一個片段,不這樣做,學習的目的。
從ARM ARM:
LDRMIB
- >LDR
MI
B
負載,減去/負,字節
LDRPLB
- >LDR
PL
B
負載,此外,正或0,字節(這是預UAL語法),使用UAL它應該讀取LDRBPL
。
加載寄存器字節(寄存器)計算從一基址寄存器值和偏移寄存器值的地址,從存儲器加載 字節,進行零擴展,以形成一個32位字,並且將其寫登記冊。
LDRMIB.W
- >LDRMIB
,.W
用於指令將被編碼爲32位。
如您所說,LDRPLB可以重寫爲LDRBPL(pre-UAL語法)。那麼,爲什麼LDRMIB不能被重寫爲MI是負的LDR B MI呢? – Nnez
,因爲指令是'LDRMIB',單個字。 MI不是減號,它是Multiple Increment的縮寫,B是Before Before Byte或其他。轉到ARM ARM獲取指示信息,而沒有其他地方。 – auselen
除非在過去的幾年里語法已經發生了很大的變化,我敢肯定'LDRMIB'將會是'LoaD(word)(if)MInus,Byte'。 'LoaD Multiple Increment Before'將被寫爲'LDMIB'(注意缺少一個'R'),並且將有一個寄存器列表('{...}')作爲它的第二個操作數。 – Michael