1

我正在寻找可以快速方便地向我展示(英特尔)汇编指令的十六进制等效项的程序(首选 Linux/FOSS)或网站

例如我输入:

test al, al

它输出

84 c0

用 C 编写内联汇编并检查它编译成的内容并没有那么快速和方便。

4

2 回答 2

3

为此,我总是使用 as from 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
于 2013-02-25T17:35:49.140 回答
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
于 2013-02-25T19:29:46.807 回答