0

我遇到了奇怪的系统崩溃。崩溃发生在MIPS processor. 该指令没有内存访问 - 用于注册移动的寄存器。我假设崩溃发生在移动指令处,因为它epc保存了下一条指令的地址。

jr ra;  
move v0,a0;  
lw a0,16(a0); 

什么会导致这种情况?

ePC即使在指令之后仍然保持第三条指令,这jr是由于流水线。

4

1 回答 1

1

鉴于 EPC 持有 JR 之后的第三条指令的地址,则崩溃发生在该指令处。MOVE 指令在 JR 的分支延迟槽中,因此在 JR 之前执行。JR 返回到 LW 指令,这是 EPC 告诉您崩溃正在发生的地方。

顺便说一下,MOVE 指令不会导致 MIPS 体系结构中的任何异常(取指时的页面错误除外)。

于 2012-08-27T18:38:07.143 回答