在MIPS上获得错误的epc

时间:2013-04-16 09:18:54

标签: mips cpu-registers

我知道MIPS在分支延迟时会出现错误的epc寄存器值,而epc = fault_address - 4。 但是现在,我经常得到错误的EPC值甚至不在.text段如0xb6000000,这个案例有什么问题? 谢谢你的进步..

1 个答案:

答案 0 :(得分:0)

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

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

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