Assembly 调整mips gcc输出以使用MARS

Assembly 调整mips gcc输出以使用MARS,assembly,gcc,mips,mars-simulator,spim,Assembly,Gcc,Mips,Mars Simulator,Spim,MIPS gcc生成的MIPS汇编代码几乎(但不完全)在Mars MIPS模拟器上运行。例如: 编译器生成“j$31”而不是“jr$31” 编译器在文本段中放入.align指令,这是Mars不允许的 此外,生成的程序集未完全设置,因此无法正确启动和停止(即,最后没有sycall 10) 这些问题似乎都可以通过简单的脚本轻松解决;但是,在我重新发明轮子之前,我想知道: (1) 是否有任何gcc标志可以消除这些问题? (2) 有人知道有一个现有的程序可以修复mips gcc输出,使其在火星上运行

MIPS gcc生成的MIPS汇编代码几乎(但不完全)在Mars MIPS模拟器上运行。例如:

  • 编译器生成“j$31”而不是“jr$31”
  • 编译器在文本段中放入.align指令,这是Mars不允许的
此外,生成的程序集未完全设置,因此无法正确启动和停止(即,最后没有sycall 10)

这些问题似乎都可以通过简单的脚本轻松解决;但是,在我重新发明轮子之前,我想知道: (1) 是否有任何gcc标志可以消除这些问题? (2) 有人知道有一个现有的程序可以修复mips gcc输出,使其在火星上运行吗

(FWIW,我在gcc 3.3.6和4.6.1上看到了相同的行为。)

相关:关于的回答涵盖了一些基本知识,如使用
gcc-fno延迟分支