我试图引起浮点异常(除以零,奇数寄存器等),并在自定义处理程序中处理它们。如果包含处理程序并进入内核代码,则(cause)和(epc)为0x00000000。如果我不包含处理程序,则可以正确识别异常,但无法进入内核。
我尝试了所有我想到的所有组合,并花费了许多时间进行搜索,但几乎找不到关于在MARS中处理浮点异常的任何信息。对于MIPS来说,也没有那么多。
.include "exceptions-s.asm"
.data :
Pi : .double 3.141592653589793238462643383279502884
.globl main
.text
main :
ldc1 $f5, Pi
没有自定义处理程序,“第18行:运行时异常位于0x00400004:第一个寄存器必须为偶数”,但无法进入内核代码。
使用自定义处理程序,(自定义)和(epc)为0x00000000。可以进入内核,但是结果没有用。