Compiler construction 将MIPS程序集转换为RISCV程序集

Compiler construction 将MIPS程序集转换为RISCV程序集,compiler-construction,mips,interpreter,yacc,riscv,Compiler Construction,Mips,Interpreter,Yacc,Riscv,我正在致力于将为QTSPIM模拟器编写的简单MIPS汇编程序翻译成用于教学范围的RISCV汇编程序。我的想法是修改开源项目QTSPIM提供的lexer和parser yacc 这应该是流程: lexer分析输入MIPS程序集并创建令牌(例如,添加、加载、存储..) QTSPIM解析器yacc的修改版本读取令牌并生成相关的RISCV程序集作为输出 这个想法正确吗?还是用另一种方法来解决这个问题更好?我认为这应该行得通 以下是一些其他想法: 使用脚本(如sed、awk或其他) 我使用公式和查找表在

我正在致力于将为QTSPIM模拟器编写的简单MIPS汇编程序翻译成用于教学范围的RISCV汇编程序。我的想法是修改开源项目QTSPIM提供的lexer和parser yacc

这应该是流程:

  • lexer分析输入MIPS程序集并创建令牌(例如,添加、加载、存储..)
  • QTSPIM解析器yacc的修改版本读取令牌并生成相关的RISCV程序集作为输出
    这个想法正确吗?还是用另一种方法来解决这个问题更好?

    我认为这应该行得通

    以下是一些其他想法:

    • 使用脚本(如sed、awk或其他)
    • 我使用公式和查找表在Excel中编写了一个简单的汇编/反汇编程序
    在任何情况下,都需要映射寄存器

    • MIPS有10个临时变量,而RISC V只有7个
    • MIPS有4个参数寄存器,而RISC V有8个
    • MIPS使用单独的返回值和参数寄存器,而RISC V使用共享的返回和参数寄存器
    • MIPS有8个保存的寄存器,而RISC V有12个

    如果有参数传递,可能需要更多的返工,特别是如果您想遵循RISC V调用约定。

    谢谢您的评论!我更喜欢修改解析器,主要是因为您强调了MIPS和RISCV之间的差异。。。