我刚从Mips开始,所以这听起来可能很简单,但是:
当我在没有 li $v0,10指令的情况下编写上面的代码时,我收到了一条错误消息:内存退出绑定。
当,我补充说,它在没有警告的情况下工作。
这意味着什么?
.text
.globl main
main:
li $t1,27
li $t2,2
mulou $t3,$t1,$t2
li $v0,10
syscall发布于 2020-10-18 18:44:23
li本身只是将立即加载到寄存器中。在这种特殊情况下,syscall另一端的服务例程会查看$v0中的值,以判断请求的函数是什么。10是exit的代码(参见spim支持的系统调用列表)。如果不设置$v0,那么将根据$v0碰巧包含的值执行一些随机函数。很可能它不会是exit,所以cpu试图在内存中的代码之后继续执行,这迟早会崩溃。
https://stackoverflow.com/questions/64417028
复制相似问题