我正在构建一个玩具编译器作为学习项目,我现在正在代码生成阶段徘徊。我发现this page描述了我可以定位的许多不同的汇编程序,我想要一些可供选择的建议。
我的目标是优化我的学习经验 - 为此,我尝试做出能够为我提供最有用的知识的决策。一些例子是:
我理解这是非常主观的,所以试图进一步澄清:我更喜欢开源到专有,广泛使用到广泛使用,广泛到特定。为此,我会避免像HLA这样的东西,因为它比真正的ASM更“具体”。
如果其中任何一个听起来特别不知情,我还在学习,所以如果我“做错了”,请随时告诉我。
答案 0 :(得分:2)
您是否会考虑非x86目标,如MIPS这样更清晰的RISC(精简指令集计算机)处理器,您可以使用软件MIPS emulator进行测试?
否则我会说Linux,我会考虑NASM风格的汇编输出或中间格式。我相信YASM,FASM支持默认或标记的兼容性,并使用英特尔的语法,而GNU的气体使用AT& T的语法,这被广泛认为是尴尬或更糟,但与gcc输出兼容。
答案 1 :(得分:0)
如果您生成ASM,则没有理由使用任何高级功能,因此我认为除了其他功能之外还有很多东西要卖掉。您可以快速扫描几个,然后选择最容易起床和运行的那些。
另外,请记住,如果您除了基本功能之外什么都没有,并且需要小心地设计ASM输出代码,那么您应该能够切换到不同的汇编程序格式,而只需要切换输出格式字符串(IIRC) printf
可以按位置选择参数,因此您甚至可以反转参数顺序)。我不会写它来预先做到这一点,但如果你记住你可能想要稍后,它可能会在以后支付。