QtSPIM:显示的代码说明,无需加载程序

问题描述 投票:0回答:1

即使未加载程序,QtSPIM MIPS汇编器也已经显示了几行代码,就像在https://ecs-network.serv.pacific.edu/ecpe-170/tutorials/qtspim-tutorial上可以看到的。

我认为这是加载程序所必需的,但是我对准确的解释非常感兴趣,以了解所有细节。

mips qtspim spim
1个回答
0
投票

QtSPIM程序由两部分组成:异常处理程序和用户程序。

[默认异常处理程序既包括简短的用户模式启动代码序列(在0x00400000处加载,也包括位于内核内存.ktext中的实际异常处理程序,从0x80000180开始加载,]]

加载用户程序时,它会附加到用户模式代码(来自异常处理程序)的大约位置0x00400024。您还可以看到,在用main加载程序之前,main的地址(在该启动代码中)被视为0,也就是未定义。

您可以用自己的替换默认的异常处理程序。使用Simulator菜单,Settings子菜单,MIPS选项卡,Load Exception Handler(或Use default exception handler)。

在您的异常处理程序文件中,您将实际的处理程序放置在.ktext指令之后,并且将开始序列放置在.text指令之后-这是可选的-如果您不提供一个,则main无处可返回,因此要正常终止,必须通过syscall退出而不是简单地返回。

另一个流行的模拟器MARS不包括此默认用户mnode启动代码序列,因此它们必须使用syscall从main退出而不是返回。

默认的异常处理程序会打印出异常的原因,并且不会执行其他任何操作。

例如,如果要执行中断驱动的控制台I / O,则可以编写自己的异常处理程序。 QtSPIM还支持计时器,该计时器也使用中断机制。您也可以实现陷阱处理程序(teqtneteqitnei指令),但是syscall指令始终由MIPS异常处理机制之外的QtSPIM处理。

© www.soinside.com 2019 - 2024. All rights reserved.