【发布时间】:2013-12-29 19:01:56
【问题描述】:
我用 C 从头开始创建了一种编程语言。我构建了一个编译器,它处理输入文件中的代码并将其转换为标记并检查标记的顺序是否正确。我在编译器的最后一步:输出/可执行文件。我想创建一个可以在终端中运行的输出。我想创建一个 a.out 输出,但我能找到的唯一资源是 this from nasm,这对我没有帮助。
所以我的问题是,如何创建可以在终端中运行的 a.out 文件(unix 可执行文件)?
【问题讨论】:
-
“最简单”的方式是生成汇编代码,然后使用现有的汇编器+链接器生成最终的可执行文件。
-
我认为你应该阅读一些 ELF 文档。
-
@OliCharlesworth 我想在我的应用程序内完成所有处理和编译
-
那么你确实需要查看你提到的nasm源。
aout_write函数从头开始创建一个新的可执行文件,正如您所见,它并不像“只输出原始代码”那么简单。 -
选择一种格式,a.out、elf、intel hex 等,找到有关该格式的详细信息,然后创建该文件。就是这么简单,在我写这篇文章的时候,我搜索了 a.out 格式并找到了详细信息。
标签: c unix compiler-construction executable machine-code