2014-03-27 125 views
0

我正在從庫文件中學習ARM彙編。我正在瀏覽一些隨機函數,並發現這些加載指令,我不明白它們的語法。ARM彙編中的LDRMIB

這裏是:

LDRMIB R1, [R5, R3] 
LDRMIB.W R2, [R2, #-0x24] 
LDRPLB.W R1, [R2, #-0x24] 
LDRPLB R2, [R5, R3] 

什麼是從原始LDR指令的區別是什麼?

由於提前

回答

1

您正在尋找與前UAL語法的一個片段,不這樣做,學習的目的。

ARM ARM

LDRMIB - >LDRMIB負載,減去/負,字節

LDRPLB - >LDRPLB負載,此外,正或0,字節(這是預UAL語法),使用UAL它應該讀取LDRBPL

加載寄存器字節(寄存器)計算從一基址寄存器值和偏移寄存器值的地址,從存儲器加載 字節,進行零擴展,以形成一個32位字,並且將其寫登記冊。

LDRMIB.W - >LDRMIB.W用於指令將被編碼爲32位。

+0

如您所說,LDRPLB可以重寫爲LDRBPL(pre-UAL語法)。那麼,爲什麼LDRMIB不能被重寫爲MI是負的LDR B MI呢? – Nnez

+0

,因爲指令是'LDRMIB',單個字。 MI不是減號,它是Multiple Increment的縮寫,B是Before Before Byte或其他。轉到ARM ARM獲取指示信息,而沒有其他地方。 – auselen

+2

除非在過去的幾年里語法已經發生了很大的變化,我敢肯定'LDRMIB'將會是'LoaD(word)(if)MInus,Byte'。 'LoaD Multiple Increment Before'將被寫爲'LDMIB'(注意缺少一個'R'),並且將有一個寄存器列表('{...}')作爲它的第二個操作數。 – Michael