2013-02-25 21 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