Что происходит, когда регистр eip достигает своего максимального значения?
Регистр eip составляет 32 бита, и он увеличивается для каждой новой инструкции. Так что же происходит, когда он достигает максимального значения для 32-битного числа: 4294967295.
1 ответ
Как правило, вы не позволяете этому случиться. %eip не увеличивается безоговорочно; это зависит от инструкций управления потоком (например, jmp
, call
, bcc
, так далее).
На практике такое поведение непредсказуемо. На некоторых процессорах переполнение% eip вызывает ошибку. На некоторых других он молча оборачивается до нуля.
Эти несоответствия привели к известному использованию (оригинального) загрузочного ПЗУ Xbox, так как в комплектах разработки использовались процессоры AMD (что привело к ошибкам при обращении), тогда как в производственном оборудовании использовались процессоры Intel (которые этого не сделали). Подробности см. В разделе " Взлом Xbox: введение в обратный инжиниринг", стр. 140.