如何编译汇编代码以便我可以看到它的十六进制字节代码?

时间:2012-03-31 23:10:18

标签: linux assembly x86

我有一个名为exit.s的简单汇编代码文件,如下所示:

.text
.globl _start
_start:
        xor %eax, %eax
        mov %al, 1
        xor %ebx, %ebx

我想得到这个的十六进制字节代码。我怎么在linux机器上这样做?我会用什么命令?

2 个答案:

答案 0 :(得分:4)

使用gcc将其编译为可执行文件,然后使用objdump -d打印出代码:

gcc -c -o my_file.o my_file.s
objdump -d my_file.o

答案 1 :(得分:1)

这里最重要的是你需要一个十六进制编辑器或查看器。你可以找到很多免费的。

组装文件后,您将拥有一个输出文件,该文件通常采用ELF格式,这意味着文件开头的标题中有额外的信息。您可以使用ld标志告诉oformat创建一个只包含汇编指令的平面二进制文件:

$ld file.o -oformat binary

然后,如果使用十六进制编辑器打开生成的可执行文件,您将看到汇编程序生成的机器代码。