8086汇编程序 - 从操作码生成目标代码

时间:2010-08-08 15:11:17

标签: compiler-construction x86 assembly

我正在为8086的汇编程序工作。我的问题是你如何将十六进制操作码转换为可执行文件,如.EXE,.ELF,.COM,a.out等。为此寻找链接/资源,如果汇编程序执行链接过程,或者它是由OS自动?

3 个答案:

答案 0 :(得分:7)

这很复杂,通常涉及两个步骤:

  • 汇编程序读入汇编代码,找出相应的机器代码,并将其写入目标文件以及根据您正在使用的目标文件格式而变化的其他一些信息
  • 链接器获取一组目标文件,并将它们合并为一个可以实际运行的可执行文件

因此汇编程序通常不会输出可执行文件;你需要选择一个目标文件格式并阅读如何生成它。理论上,只要您输出给定格式的有效目标文件,任何链接器都应该能够进行实际的链接过程,但通常汇编器和链接器都是一组,所以我不确定它实际上会有多好在实践中工作(例如,GNU汇编程序(气体)输出GNU特定的重定位和GNU链接器(ld)知道如何处理的部分,因此您不能在任何其他链接器中使用气体生成的目标文件)

ELF在SV ABI的第4节中有记录,但您也需要阅读处理器的附录。 COFF被记录为PE规范的一部分,尽管我无法在任何地方找到它在互联网上托管;如果你需要它我可以把它贴在某处

答案 1 :(得分:1)

它取决于(目标)平台,但对于Windows PE格式(EXE),您的工作是生成obj files,让链接器完成其余工作。

答案 2 :(得分:0)

这是一篇讨论一些可执行格式的文章。它应该让你开始,假设你在Windows上。

http://en.wikibooks.org/wiki/X86_Disassembly/Windows_Executable_Files