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

abc*_*bar 3 compiler-construction x86 assembly

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

Mic*_*zek 8

它相当复杂,通常包括两个步骤:

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

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

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