hexdump和asm之间的关系是什么?

时间:2016-03-11 14:32:22

标签: x86-64 hexdump

所以我正在学习英特尔x86,在我的班上我们浏览了xxd和objdump,它们是十六进制转储命令。

然而,我从来没有解释过hexdump到底是什么,所以经过一些研究后我才能发现,这很简单,只是转储文件的数据。

这实际上提出了更多的问题:因为我学习asm,如果hexdump是数据,那么操作该数据的代码是什么?根据我的理解,一个文件包含将要执行的代码。但是,如果文件中只有数据,文件中的代码在哪里,或者反汇编在哪里是asm?

1 个答案:

答案 0 :(得分:2)

hexdump只是一种仅使用字符0-9a-f对二进制数据进行编码的方法。这使得人类更容易阅读和输入,而无需记住256个字形的数值。

asm tag wiki有一些关于装配是什么的信息。 Machine code是用于表示机器指令的二进制格式,旨在由硬件(CPU)解析。汇编程序是一个程序,它按照asm源文件中的指令将字节组装成二进制文件。通常,汇编程序默认输出结构化文件格式,如ELF或Windows PE,but you can use a flat binary output format if you want to define everything yourself。您可以使用db(NASM语法)或.byte GNU语法等伪指令将您想要的任何字节组合成输出文件。

其他一些完全不同的二进制格式包括PDF和ZIP。它们旨在通过软件进行解析。

这个问题就像询问文本文件和asm之间的关系。 (或C,或任何东西。)虽然不完全。或许:编辑器窗口和C程序之间的关系。

我的观点是hexdump没有任何特定含义,可以在任何字节流上完成,无论这些字节是什么意思。