代码编译器-如何编译ASM代码



我一直在用C++制作一个编程语言编译器,它将我的代码转换为Assembly。然而,我不知道如何将此程序集代码转换为可执行格式(最好是.exe)。我该怎么做?

使用Microsoft宏汇编程序8.0(MASM)包(x86)

Microsoft Macro Assembler 8.0(MASM)是一个使用x86汇编语言程序并生成相应二进制文件的工具。

汇编汇编代码,而不是编译,汇编程序就是您需要的工具。

您需要的确切汇编程序将取决于目标指令集-汇编语言实际上不是一种语言,它描述了

任何使用助记符表示单个机器代码指令的语言即使对于单个体系结构,汇编语言语法也可能有所不同——例如,在x86上,至少有两种语法——Intel和at&T、 因此,即使对于x86,您也需要一个能够处理工具输出的任何语法的汇编程序。当然,您的工具需要输出汇编程序可以使用的内容,这可能意味着生成额外的汇编程序和特定于目标的指令,而不仅仅是原始的汇编助记符。

对于您的语言编译器来说,输出C或C++代码可能更简单(严格来说是翻译器而不是编译器),这就是早期C++"编译器"的工作方式(Comeau C++仍然如此),这样您的语言至少可以更容易地在不同的体系结构之间移植。C编译器几乎和任何目标的汇编程序一样普遍,但转换为C可以为所有目标体系结构提供一个单一的后端。

最新更新