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
的短启动序列。此开始序列设置 argc
和 argv
,以便 main
可以具有正常的 C 风格签名:int main(int argc, char*argv[]);
.
当你运行QtSPIM时,它首先加载内核模式异常处理程序文件,它实际上包括这个用户模式启动序列。您应该注意到您的汇编程序在 004000020
左右加载,并且从 00400000
到 00400018
的代码是用户模式启动。
另请参阅 上的此答案,其中涉及异常处理程序文件。
避免这种情况的方法是 load/specify 你自己的异常处理程序文件(见上文 link)是空的——或者至少没有 .text
部分(仅 .ktext
) 您将放弃异常处理程序本身,但除了打印异常外,这并没有太大作用。
QtSPIM MIPS 模拟器在执行任何汇编程序的第一行时自动将寄存器 a1 和 a2 设置为以下值:
R5 [a1] = 7ffff57c
R6 [a2] = 7ffff584
这是什么原因?有办法避免吗?
QtSPIM 加载调用 main
的短启动序列。此开始序列设置 argc
和 argv
,以便 main
可以具有正常的 C 风格签名:int main(int argc, char*argv[]);
.
当你运行QtSPIM时,它首先加载内核模式异常处理程序文件,它实际上包括这个用户模式启动序列。您应该注意到您的汇编程序在 004000020
左右加载,并且从 00400000
到 00400018
的代码是用户模式启动。
另请参阅
避免这种情况的方法是 load/specify 你自己的异常处理程序文件(见上文 link)是空的——或者至少没有 .text
部分(仅 .ktext
) 您将放弃异常处理程序本身,但除了打印异常外,这并没有太大作用。