在SPIM上运行编译后的汇编文件时,我遇到了很多麻烦。基本上,我想编写一个c++文件,然后生成一个可以在SPIM中打开而不会出错的.s文件。这意味着程序集必须在MIPS32 ABI中使用MIPS I指令(一些MIPS II指令)。我该怎么做呢?现在我正在使用g++,但是当我尝试在SPIM中运行这个文件时,我遇到了严重的错误。我在MACLinux10.6.3上工作,并且在OSx机器上远程编译。有没有什么特殊的编译器可以让我更轻松呢?
发布于 2010-07-13 04:06:35
给编译器提供-S选项,它将生成汇编代码。然后,您必须编辑代码,以便SPIM接受它。
如果您启用了像-O1或-Og这样的优化以获得更多可读性的代码,那么您还需要g++ -S -fno-delayed-branch。通常,SPIM被配置为模拟没有分支延迟槽的MIPS,但gcc将假定分支之后的指令是运行的,即使它被采用。-fno-delayed-branch让gcc用nop填补任何分支延迟的空位。
另一个有用的选项是-fverbose-asm,它让gcc使用每个操作数的C变量名添加注释。
您将希望避免使用像std::vector这样的C++库,这些库编译成大量额外的代码而不是本地数组,特别是在没有优化的情况下,除非您确实需要这些特性。
https://stackoverflow.com/questions/3103560
复制相似问题