QtSPIM MIPS 模拟器:寄存器 a1 和 a2 自动更改

QtSPIM MIPS Simulator: Register a1 and a2 get automatically changed

QtSPIM MIPS 模拟器在执行任何汇编程序的第一行时自动将寄存器 a1 和 a2 设置为以下值:

R5  [a1] = 7ffff57c
R6  [a2] = 7ffff584

这是什么原因?有办法避免吗?

QtSPIM 加载调用 main 的短启动序列。此开始序列设置 argcargv,以便 main 可以具有正常的 C 风格签名:int main(int argc, char*argv[]);.

当你运行QtSPIM时,它首先加载内核模式异常处理程序文件,它实际上包括这个用户模式启动序列。您应该注意到您的汇编程序在 004000020 左右加载,并且从 0040000000400018 的代码是用户模式启动。

另请参阅 上的此答案,其中涉及异常处理程序文件。


避免这种情况的方法是 load/specify 你自己的异常处理程序文件(见上文 link)是空的——或者至少没有 .text 部分(仅 .ktext) 您将放弃异常处理程序本身,但除了打印异常外,这并没有太大作用。