关于sram功能测试

在sram功能测试的第78个功能点报了如下的错误

trace.png

出错位置的指令是读取epc中的值到1a寄存器中,再往前找错误,找到epc出错的地方,附近的指令如下

inst.png

其中指令地址为0xbfc31e48的指令一条BEQ转移指令,后面紧跟的是SYSCALL指令,如果BEQ跳转成功,则SYSCALL为延迟槽中的指令,异常处理时epc中的值为BEQ的地址0xbfc31e48,这也是举办方给的cpu132跑出的结果,如下
cpu132.png

而我发现该跳转指令BEQ是比较寄存器8和寄存器0的值(因为不知道给的cpu132中通用寄存器堆的命名,没看到寄存器里的内容),而再往前看最后一次对寄存器8的写情况如下
8.png

写入的数据并不是0,所以BEQ的跳转应该是不成功的,所以epc的值应该直接是SYSCALL的指令的地址0xbfc31e4c。
请问为什么cpu132判断的是跳转成功,或者说我对那附近的指令理解有错?
已邀请:

zhuweipu

赞同来自:

所以现在的问题不是出现在BEQ指令的实现上吗?

邢金璋

赞同来自:

问题一:跳转不成功,延迟槽指令执行吗?
问题二:例外发生在延迟槽指令中时,EPC指向什么?
 
你的问题应该是对问题二没理解清楚。你去查阅MIPS手册,EPC寄存器的相关描述。

要回复问题请先登录注册