让我们从去年 9 月份就这个话题提出的一个问题开始。我没有找到这个问题的答案。是的,我读了评论。我从他们那里了解到的只是我需要上大学(而且我刚刚完成学业)。
我知道机器码表。但是,如果我们查看目标文件(通过 Linux 中的 nm 命令和 Windows 中的 dumpbin),我们将看到这些代码所在的特定结构。如果我简单地将所有汇编代码翻译成这些命令,那么就不会有这样的结构。
问题是如何实现目标文件中的结构。
还有一个问题:也许目标文件包含的不是机器代码,而是微代码?
让我们从去年 9 月份就这个话题提出的一个问题开始。我没有找到这个问题的答案。是的,我读了评论。我从他们那里了解到的只是我需要上大学(而且我刚刚完成学业)。
我知道机器码表。但是,如果我们查看目标文件(通过 Linux 中的 nm 命令和 Windows 中的 dumpbin),我们将看到这些代码所在的特定结构。如果我简单地将所有汇编代码翻译成这些命令,那么就不会有这样的结构。
问题是如何实现目标文件中的结构。
还有一个问题:也许目标文件包含的不是机器代码,而是微代码?
也许您的问题在 enSO 中得到了解答:How Do You Make An Assembler?
由于您对组装和创建目标文件的阶段感兴趣,因此英文文章中的第四个和第五个链接指向目标文件的规范。您必须熟悉它们,因为目标文件不仅包含汇编指令到机器代码的翻译,还包含其他元数据,包括调试信息、有关链接动态链接库的信息以及有关操作系统应如何加载各个部分的信息将文件写入内存。因此,汇编代码到机器代码的简单翻译不能与真实的目标文件一致。
答案中的第一个链接指向一本关于创建汇编程序的书 - a。在类似的讨论中也推荐了它。您可以查看第一章,其中解释了不同汇编器的选项、它们的工作原理以及目标文件的构造。
还有一个名为The Assembler Developer's Kit的项目- 一个包含用于创建您自己的汇编器的手册的站点。也许它会比上面的书更实用。
俄语中没有太多关于创建汇编程序的信息,而不是用汇编语言编程的信息,但有一篇评论文章,至少您可以从中了解编译过程。
为了转换汇编代码,使用 nasm。这是一个实用程序,允许您将汇编代码汇编到目标文件中。
例如:
需要转换为文件的Programm.asm文件:
将 Programm.asm“转换”为 Programm.o 的命令:
准备好!!!