编译一个C程序后,你会得到一个.o文件。我知道这是一个由“0”和“1”组成的文件,而且是在成功编译一个程序后形成的。但是我想看看文件里有什么!
wko9yo5t1#
你有几个选择。首先(也是最简单的)是使用一些解码文件的东西来显示它是什么。linux上的objdump就是这样做的。
gcc -c test.c
给你测试。o
objdump -D test.o
将解码文件,并在标准输出中显示文件内容(因此将其传输到更小或类似的输出)Objdump输出显示未链接的目标文件。地址无效,必须由链接器修复。格式首先是行号,然后是作为CPU指令的某个字节数,这些在www.example.com中示出hexadecimal.eg14表示00010100。接下来是这些字节表示的指令。
0: 14 00 adc $0x0,%al
所以在上面我们有函数的第0行-它是未链接的)1400-这些是字节,它们意味着与进位0一起添加到A1寄存器,将结果存储在A1中另一种方法是使用十六进制编辑器,尝试在没有任何帮助的情况下找出14 00的含义。祝你好运。
oxf4rvwz2#
您可以在终端上使用hexdump命令来显示内容。
hexdump
语法:$ hexdump <filename>.o
$ hexdump <filename>.o
它将以hexadecimal显示内容。
hexadecimal
2条答案
按热度按时间wko9yo5t1#
你有几个选择。
首先(也是最简单的)是使用一些解码文件的东西来显示它是什么。linux上的objdump就是这样做的。
给你测试。o
将解码文件,并在标准输出中显示文件内容(因此将其传输到更小或类似的输出)Objdump输出显示未链接的目标文件。地址无效,必须由链接器修复。
格式首先是行号,然后是作为CPU指令的某个字节数,这些在www.example.com中示出hexadecimal.eg14表示00010100。接下来是这些字节表示的指令。
所以在上面我们有函数的第0行-它是未链接的)1400-这些是字节,它们意味着与进位0一起添加到A1寄存器,将结果存储在A1中
另一种方法是使用十六进制编辑器,尝试在没有任何帮助的情况下找出14 00的含义。
祝你好运。
oxf4rvwz2#
您可以在终端上使用
hexdump
命令来显示内容。语法:
$ hexdump <filename>.o
它将以
hexadecimal
显示内容。