当我使用 OS X 中的命令运行 Hexdump 时xxd -b "textile.txt"
,终端会在最右边的列中打印二进制文件和实际的 ASCII 等效文件,并以英文显示文本文件的内容。
如果我创建一个简单的 C 程序,它除了在终端上打印“hello world”之外,几乎不执行其他操作,并且我将它保存为一个.exec
文件,xxd -b
则命令输出包含二进制文件,当它被翻译后,在 .exec 文件原始的预编译源代码中是找不到的。
例子:
0002034: 00000101 00000000 00000010 01011111 01101101 01101000 ..._mh
000203a: 01011111 01100101 01111000 01100101 01100011 01110101 _execu
0002040: 01110100 01100101 01011111 01101000 01100101 01100001 te_hea
0002046: 01100100 01100101 01110010 00000000 00100001 01101101 der.!m
000204c: 01100001 01101001 01101110 00000000 00100101 00000010 ain.%.
我假设编译过程对此负责,这使我推测最右边一列的输出实际上可能是汇编代码。
我的问题总结: .exec 文件的十六进制转储输出的性质是什么,具体来说:它是汇编代码吗?如果不是,那么它是什么?
提前致谢。
答案1
不是真正的汇编语言;但我知道混合汇编语言和机器代码很常见。汇编语言仍然是一种(部分)人类可读的语言,必须经过编译才能被机器使用。您在这里看到的是机器代码。