Exception MIPS异常打印不工作

Exception MIPS异常打印不工作,exception,assembly,exception-handling,mips,Exception,Assembly,Exception Handling,Mips,MIPS异常处理程序代码不工作:在下面的代码中,我试图打印出导致异常的指令地址(寄存器$14)和异常类型(寄存器$13)。我已经用尽了我能想到的每一条可能的路线 错误消息给出: “lw”:操作数太少或格式不正确。预计:lw$t1,-100$t2 谢谢大家! mfc0 $k0,$14 # Coprocessor 0 register $14 has address of trapping instruction lw $a0, $k0 # address of string to p

MIPS异常处理程序代码不工作:在下面的代码中,我试图打印出导致异常的指令地址(寄存器$14)和异常类型(寄存器$13)。我已经用尽了我能想到的每一条可能的路线

错误消息给出:

“lw”:操作数太少或格式不正确。预计:lw$t1,-100$t2

谢谢大家!

  mfc0 $k0,$14 # Coprocessor 0 register $14 has address of trapping instruction

    lw $a0, $k0 # address of string to print

    li $v0, 4 # Print String service

    syscall

    mfc0 $k0,$13 # Coprocessor 0 register $13 has type of exception

    lw $a0, $k0 # address of string to print

    li $v0, 4 # Print String service

    syscall
而不是:

lw <regdst>,<regsrc>
或者,也可以通过以下方式完成:

addiu <regdst>,<regsrc>,0
并且,尾声看起来像:

move $at,$k0
eret
然后,我还建立了一个堆栈框架,就像普通函数一样[保存所有其他被更改的寄存器],并在最后从中弹出

我提到这一点的原因是,异常处理程序必须保存它将更改的每个寄存器,并在退出时恢复原始值,如果它要返回到基码(例如,它可能捕获并修复溢出异常)

这在处理断点时[尤其如此]。

而不是:

lw <regdst>,<regsrc>
或者,也可以通过以下方式完成:

addiu <regdst>,<regsrc>,0
并且,尾声看起来像:

move $at,$k0
eret
然后,我还建立了一个堆栈框架,就像普通函数一样[保存所有其他被更改的寄存器],并在最后从中弹出

我提到这一点的原因是,异常处理程序必须保存它将更改的每个寄存器,并在退出时恢复原始值,如果它要返回到基码(例如,它可能捕获并修复溢出异常)


处理断点也是如此。

Dude,单击问题下方的“编辑”链接,选择所有代码,然后单击带大括号的按钮以正确设置其格式。好的,谢谢提示!伙计,点击你问题下方的“编辑”链接,选择你所有的代码,然后点击带花括号的按钮来正确设置格式。好的,谢谢你的提示!