当eip寄存器达到最大值时会发生什么?

时间:2014-12-26 07:46:10

标签: assembly x86 cpu cpu-registers eip

eip寄存器为32位,每增加一条新指令就会递增。那么当它达到32位数的最大值时会发生什么:4294967295。

1 个答案:

答案 0 :(得分:6)

通常情况下,你不要让它发生。 %eip不会无条件地增加;它受流控制指令的影响(如jmpcallbcc等。

实际上,这种行为是不可预测的。在某些CPU上,%eip溢出会导致故障。在其他一些方面,它默默地回归到零。

这些差异导致(原始)Xbox引导ROM的着名利用,因为开发套件使用AMD CPU(故障包围),而生产硬件使用Intel CPU(没有)。有关详细信息,请参阅第140页的Hacking The Xbox: An Introduction to Reverse Engineering