2013-02-25 59 views
1

我要尋找一個程序(Linux的/開放源碼軟件的首選)或一個網站,可以快速方便告訴我的(英特爾)彙編指令的hex等值尋找程序,以顯示ASM指令爲二進制ocodes

例如我進入:

test al, al 

它輸出

84 c0 

寫行內彙編在C和檢查它編譯成不 COUT爲快速,便捷。

+0

Possi ble重複http://stackoverflow.com/questions/12476548/checking-up-intel-assembly-opcodes-easily-in-linux – nrz 2013-02-25 17:30:02

+0

binutils objdump -D – 2013-02-25 18:31:23

回答

3

我總是使用binutils。例如:

$ echo -e "MOV DWORD PTR [RSP+4], 0x12345678" | as -o /dev/null -64 -al -msyntax=intel -mnaked-reg 
GAS LISTING    page 1 


    1 0000 C7442404 MOV DWORD PTR [RSP+4],0x12345678 
    1  78563412 

$ echo -e "push eax" | as -o /dev/null -32 -al -msyntax=intel -mnaked-reg 
GAS LISTING    page 1 


    1 0000 50  push eax 
+0

不錯,因爲'as'通常是可用的。命令行有點太難記,但它運行良好。你知道是否有一個靜態表binutils或API調用,我可以用它來建立一個小型網站? – nh2 2013-04-17 02:53:55

2

你可以結合使用NASM與NDISASM,如:

這是彙編文件(命名,比如,test.asm)與你的指令:

bits 32 
test al, al 

你組裝它:

nasm -f bin test.asm -o test.bin 

然後你拆開它:

ndisasm -b 32 test.bin 

這是你會得到什麼:

00000000 84C0    test al,al 

另一種方式是裝配時產生列表文件:

nasm -f bin test.asm -o test.bin -l test.lst 

這是你在test.lst得到:

1         bits 32 
2 00000000 84C0     test al, al