我反編譯了一些ARM ELF文件並讀取了彙編代碼。但是,我不明白一些代碼是如何轉換成助記符的。例如,我得到了這樣的代碼:ARM彙編程序中的編碼寄存器操作數是怎樣的?
#hex code | #mnemonic | #binary
0xb480 | push {r7} | 1011 0100 1000 0000
0xb580 | push {r7, lr} | 1011 0101 1000 0000
0xb5f0 | push {r4,r5,r6,r7,lr} | 1011 0101 1111 0000
所以,你可以清楚地看到操作碼爲push
是0xb4
或0xb5
如果推多個值。但是,那麼如何創建寄存器列表呢?
第一個例子是很清楚的,r7
由第8位,這是設置編碼。但是,爲什麼第二個操作碼也推動lr
?那有沒有標誌?
你確定操作碼是兩個完整的字節嗎?它可能只有6/7位。 – hivert