首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtSPIM:不加载程序时显示代码的说明

QtSPIM:不加载程序时显示代码的说明
EN

Stack Overflow用户
提问于 2020-01-20 21:08:49
回答 1查看 310关注 0票数 0

即使没有加载任何程序,QtSPIM MIPS汇编程序也已经显示了一些代码行,就像在https://ecs-network.serv.pacific.edu/ecpe-170/tutorials/qtspim-tutorial上看到的那样。

我假设这是加载程序所必需的,但我会非常感兴趣的是一个确切的解释来理解所有的细节。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-20 23:08:52

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

缺省异常处理程序包括简短的用户模式启动代码序列(在0x00400000处加载)以及位于内核存储器.ktext中的实际异常处理程序,该异常处理程序在0x80000180处开始,

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

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

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

另一个流行的模拟器MARS不包括这个默认的用户模式启动代码序列,因此MARS程序总是必须使用syscall从main退出。

默认的异常处理程序打印异常的原因,并不做太多其他的事情。

例如,如果你想做中断驱动的控制台I/O,你可以编写自己的异常处理程序。QtSPIM也支持定时器,它也使用中断机制。你也可以实现陷阱处理程序(teqtneteqitnei指令),但syscall指令总是由QtSPIM在MIPS异常处理机制之外处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59823995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档