Daniil_the_Fool
@Daniil_the_Fool

Получение доступа к регистру rip x86-64 архитектура?

Добрый день. Уже некоторое время пытаюсь получить доступ к регистру - указателю rip.
Может у него есть базовый адрес, тк есть же адресация rip - относительная [base + смещение]
нашел такой пример но у меня он тоже не работает:
movb $0x4,0x0(%rip)
error: expression syntax error
error: parser: instruction expected

error: symbol 'rip' not defined

1. lea current_adr, %rip
==> error: symbol 'rip' not defined
1.2. lea %rax, %rip ;попытка записи в регистр rax (тоже размерностью 64 бит)
==> error: expression syntax error

2. Использовать rip - относительную адресацию у меня не вышло:
==> error: symbol 'rip' not defined

есть у кого может мысли как получить доступ к этому регистру?
  • Вопрос задан
  • 443 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
как получить доступ к этому регистру?

lea (%rip), %rax (в синтаксисе at&t) получает адрес следующей инструкции
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Если я не путаю, RIP (как и EIP в x86) нельзя ни читать, ни писать напрямую - только через команды передачи управления.
Поэтому только косвенные приёмы, вроде вызова подпрограммы и чтения адреса возврата внутри стека, или получения адреса метки, расположенной как можно ближе к текущей инструкции - ну или более изящные способы, вроде использования относительной адресации. Смотри ответ jcmvbkbc.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы