我为我的实验语言编写了一个解释器,并知道我想继续为它编写一个小编译器。它可能需要源代码,执行与解释器(tokenizer,parser)相同的步骤,然后将源代码转换为汇编。
现在我的问题:
我能说我的语言中的每个命令都可以1:1翻译成一堆汇编指令吗?我的意思是,如果我必须完全抛弃整个输入程序,或者它只是转换为每行汇编。
我应该使用哪种汇编程序作为输出格式?
答案 0 :(得分:4)
答案 1 :(得分:0)
除非你绝对决心“重新发明轮子”,否则你也可以只发出C代码,然后将其传递给现有的C编译器,例如: GCC。它比编写自己的后端要容易得多,你将免费获得所有C编译器的优化等。
答案 2 :(得分:0)
不,你不能指望那样。如果你的语言包含像eval()这样的东西,它可以变得很时髦。
作为后端汇编程序,nasm似乎最受欢迎。 GAS是可能的,但我发现它有点无情且不完整。