Неверный регистр eip?

Я отлаживаю программу c с помощью gdb в терминале Linux, я разобрал ее и запустил, затем попытался найти адрес памяти в регистре EIP. Это то, что случилось:

(gdb) i r eip Неверный регистр `eip'

Почему он говорит, что мой регистр eip недействителен?


person jay    schedule 18.02.2012    source источник
comment
Это 64-битная программа? Если да, то это рип, а не еип.   -  person Alexey Frunze    schedule 18.02.2012
comment
Да, спасибо, я и не знал, что это разные имена.   -  person jay    schedule 18.02.2012


Ответы (2)


Это 64-битная программа? Если да, то это рип, а не еип.

person Alexey Frunze    schedule 18.02.2012
comment
Обратите внимание, что gdb позволяет обращаться к программному счетчику с помощью $pc. Это будет работать как на 32-битной, так и на 64-битной версии, а также на других архитектурах. - person Jester; 09.01.2015
comment
Так что делать, если я хочу eip вместо рипа? - person Deep Jadia; 20.02.2019
comment
@DeepJadia Вы не можете выбрать, потому что это ip в 16-битном режиме, eip в 32-битном режиме и рип в 64-битном режиме. - person Alexey Frunze; 20.02.2019

В зависимости от архитектуры вашей программы регистр может меняться:

  • 16 бит — ip
  • 32 бит — eip
  • 64 бит — rip
person YLyu    schedule 29.06.2017