3
我在寫一個簡單的arm仿真器。手臂具有不同的格式/指令類別link 以二進制格式讀取指令後如何確定哪些類別/格式指令屬於哪種類型。如何在拆卸期間對二進制指令進行分類
我在寫一個簡單的arm仿真器。手臂具有不同的格式/指令類別link 以二進制格式讀取指令後如何確定哪些類別/格式指令屬於哪種類型。如何在拆卸期間對二進制指令進行分類
我最近自己寫了一個ARM模擬器。
下面是我所使用的策略:
使用口罩,以測試對已應用該面具後的值。
下面是從GNU的反彙編代碼段用於ARM:
(* V7 instructions. *)
(arch:ARM_EXT_V7; value:$f910f000; mask:$ff70f000; i:_und; assembly:'pli'#9'%a'),
(arch:ARM_EXT_V7; value:$f3af80f0; mask:$fffffff0; i:_und; assembly:'dbg'#9'#%0-3d'),
(arch:ARM_EXT_V7; value:$f3bf8f50; mask:$fffffff0; i:_und; assembly:'dmb'#9'%U'),
(arch:ARM_EXT_V7; value:$f3bf8f40; mask:$fffffff0; i:_und; assembly:'dsb'#9'%U'),
(arch:ARM_EXT_V7; value:$f3bf8f60; mask:$fffffff0; i:_und; assembly:'isb'#9'%U'),
這裏是你如何運用它:
if (InstructionBytes and Mask) = value
然後我們有一個匹配你需要確保你按照正確的順序應用口罩。
應該首先檢查在新版本中引入的指令。
無需擔心是否處於ARM或Thumb模式。
只需拆卸兩個並且兩個並排存放拆卸。如果發生模式更改,請切換您正在讀取反彙編指令的表格。
通過根據鏈接到的頁面上的表格(來自ARM的指令集引用)查看位模式。 – Michael 2014-11-25 08:17:24
http://emucode.blogspot.se/2010/09/decoding-arm-instruction-set.html – auselen 2014-11-25 08:49:25
謝謝@auselen如果您知道任何其他鏈接,請發帖 – 2014-11-25 09:13:24