在x86架構中,有一個,兩個和三個字節的操作碼。 ARM如何?例如,當我反彙編一個二進制文件時,是否可以始終將第一個字節作爲操作碼?所有的ARM操作碼都是1個字節?
0
A
回答
4
不。現在有幾個arm指令集。主臂指令集中,所有指令都是32位,並且指令的解碼不會被隔離到指令內的一個字段。拇指指令集基於16位指令,但答案相同,具體取決於解碼在不同位置的指令。然後拇指指令集有thumb2擴展,相同的答案。 thumb2指令是來自拇指的未定義指令之一,然後添加一些位來區分哪條指令。
從infocenter.arm.com獲取ARM體系結構參考手冊以查看所有這些信息。有幾個很好的圖表顯示了這一切是如何工作的,msbits用於將指令分成不同的類型,然後根據類型解釋其餘位。
x86來自8位世界,其中設計傾向於使用一個內存位置(/訪問)(當時是一個字節)用於更常用的指令,然後將一些操作碼複用到第二個字節。另外立刻增加了整體。那沒問題,但今天效率很低。 x86應該是你學習的最後一個指令集,如果不是代表一個好的指令集,你將需要忘記一些事情向前邁進。
維基百科在維基頁面本身有許多指令集,其他維基百科經常有直接鏈接。像arm和mips這樣的IP供應商,以及許多芯片供應商,您可以直接訪問他們的網站並獲取文檔。
2
ARM指令並沒有真正的'操作碼'概念。我不太瞭解x86指令集,但是您所描述的內容聽起來像6502機器代碼,其中一些字節標識要執行的指令,而其他指定指令使用的數據。
忽略Thumb,所有ARM 指令都是四個字節長。指令使用的操作數包含在這四個字節中。
相關問題
- 1. 爲什麼所有的ARM bootloader都有彙編代碼?
- 2. Javassist,字節碼操作
- 3. 字節碼操作模式
- 4. Java字節碼操作?
- 5. 字節碼操作的危害是什麼(如果有的話)?
- 6. 是否所有碼頭圖像都具有最小的操作系統?
- 7. Java中的字符是1個字節還是2個字節?
- 8. x86解碼指令操作碼字節
- 9. x86操作碼編碼:sib字節
- 10. Hpple-所有節點都是零
- 11. 所有Play Framework 2操作都是異步的嗎?
- 12. 如何強制yaml中的所有節點都是字符串
- 13. Android中的字節代碼操作
- 14. Stack = 1,Locals = 1,Args_size = 1是Java中的字節碼?
- 15. 什麼操作都是原子操作
- 16. 確定是否所有字節都在流中
- 17. ARM大會什麼是ARM的頂級操作?
- 18. Java字節碼操作 - 授權問題?
- 19. C++將字節轉換爲操作碼?
- 20. Java字節碼操作庫建議
- 21. UTF-8中的所有漢字字符都是3字節長嗎?
- 22. ARM中的原子操作
- 23. JAVA字節操作
- 24. 字節操作c#
- 25. 所有字段都給這個字段是必填的錯誤
- 26. 所有的服務器都有操作系統嗎?
- 27. ARM V7 ORRS記憶沒有操作數
- 28. 將數據編碼爲1個字節
- 29. 語句「所有Java字節碼解釋器都是JVM,但所有JVM都不是Java解釋器」是真的嗎?
- 30. 「不是所有的代碼路徑都返回一個值」