我的任务是从Compiler Design学业为C类语言生成mips指令。从计算机体系结构中可以了解到,mips是基于寄存器的指令集,可显式管理32个左右的通用寄存器。从词法分析到建立AST到生成真实代码的整个过程中,我发现很难想到基于寄存器的指令。当我目前遵循Python解释器的编译器部分的设计时,我发现其基于堆栈的字节码相当容易理解和实现。但是,我要学习的课程需要3地址中间代码,最后需要mips代码。
以下是我发现基于堆栈的代码很容易而基于寄存器的代码很容易的原因:
这是我的问题:给定AST(非常类似于Python中的AST)和符号表,
任何一种工作方案都可以。
编辑:我真正想知道的是首先如何生成MIPS代码,而不是从其他形式进行转换。