1

我知道 MIPS 在分支延迟发生时会得到错误的 epc 寄存器值,并且 epc = fault_address - 4。但是现在,我经常得到错误的 EPC 值,它甚至不在 .text 段中,例如 0xb6000000,这有什么问题?? 谢谢你的提前..

4

1 回答 1

0

CPU 对程序中区域的边界一无所知.text。它只是实现了一个 2^32 字节的地址空间。

错误编程的跳转可能会转到 2^32 字节地址空间内的任何地址。跳转指令本身不会导致任何异常——事实上,MIPS32® 程序员架构第二卷:MIPS32® 指令集明确声明跳转(J, JR, JALR)指令不会触发任何异常。

当处理器从错误编程的跳转目的地开始执行时,可能是在未初始化的内存中,接下来发生的事情取决于该内存的内容。如果未初始化的内存充满了“随机”数据,则该数据将被解释为处理器将执行的指令,直到找到非法指令或指令触发其他异常为止。

于 2013-04-17T21:56:48.973 回答