编译C程序后,您将获得一个.o文件.我知道这是一个由'0'和'1'组成的文件,如果在成功编译程序后形成的话.但我想看看文件中有什么!
Hal*_*Hal 11
你在这里有几个选择.
首先(也是最简单的)是使用解码文件的东西来显示它是什么.linux上的objdump就是这样做的.
gcc -c test.c
Run Code Online (Sandbox Code Playgroud)
给你test.o
objdump -D test.o
Run Code Online (Sandbox Code Playgroud)
将对文件进行解码并在标准输出上显示其中的内容(因此将其管道更少或类似)Objdump输出显示未链接的目标文件.地址无效,必须由链接器修复.
格式首先是一个行号,然后是一些cpu指令的字节数,这些以十六进制表示.e 14表示00010100接下来是这些byes表示的指令
0: 14 00 adc $0x0,%al
Run Code Online (Sandbox Code Playgroud)
所以上面我们有函数的第0行 - 它是未链接的)14 00 - 这些是它们意味着添加的字节,带有进位0到al寄存器存储结果在al
另一个选择是使用十六进制编辑器并尝试在没有任何帮助的情况下计算出14 00的含义.
祝好运.