2012-03-31 75 views

回答

4

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

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

当我尝试编译使用gcc我得到了一堆错误,如'/tmp/ccLqYN5a.o的那样:在功能'_start ': (+的.text为0x0):'_start的多个定义' 的/ usr/bin/ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重新定位0具有无效的符号索引11' – Nosrettap 2012-03-31 23:16:22

+0

尝试编辑后的版本。 – 2012-03-31 23:17:25

+0

谢谢,这工作。 -c是什么意思? – Nosrettap 2012-03-31 23:18:42

1

这里最主要的是,你需要一个十六进制编辑器或浏览器。有很多免费的,你可以找到。

组装完文件后,您将获得一个输出文件,通常采用ELF格式,这意味着文件起始处的标题中有额外的信息。你可以告诉ld使用oformat标志创建具有只是汇编指令平坦的二进制文件:

$ld file.o -oformat binary 

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

相关问题