是否有可能捕获将无效值写入 pc 寄存器的指令?

是否有可能捕获将无效值写入 pc 寄存器的指令?

例如,在执行完一条指令后,

pop {pc}

将一个无效值(例如 0)写入寄存器pc,CPU 将尝试获取位于 0 处的指令,这通常会触发段错误。

在处理故障时,我们可以读取寄存器的值,包括寄存器的值pc,在本例中为 0。显然,如果我们可以了解导致无效值的指令的地址pc,例如上述指令的地址pop,这将对我们进行调试有很大帮助。有没有办法更早地捕获故障(捕获导致故障的上一条指令)?

相关内容