十六进制转储和asm之间有什么关系?



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

但是,我

从未解释过十六进制转储到底是什么,所以经过一番研究后,我能找到的只是文件数据的转储。

因此,这实际上提出了更多问题:由于我正在学习asm,如果十六进制转储是数据,那么操作该数据的代码在哪里?据我了解,一个文件包含将要执行的代码。但是,如果文件中只有数据,那么该代码在文件中的什么位置,或者如果反汇编,asm 在哪里?

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


asm 标签 wiki 有一些关于程序集的信息。 机器代码是表示机器指令的二进制格式,旨在由硬件(CPU)解析。 汇编程序是按照 asm 源文件中的说明将字节组装成二进制文件的程序。 通常,汇编程序默认输出结构化文件格式,如 ELF 或 Windows PE,但如果您想自己定义所有内容,则可以使用平面二进制输出格式。 您可以使用伪指令,如db(NASM 语法)或 GNU 语法.byte以您想要的任何顺序将您想要的任何字节组装成输出文件。

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


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

我的观点是,十六进制转储没有任何特定的含义,可以在任何字节流上完成,无论这些字节意味着什么。

最新更新