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

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

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

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

Войти через центр авторизации
Похожие вопросы
26 мар. 2023, в 18:41
2000 руб./за проект
26 мар. 2023, в 18:23
10000 руб./за проект
26 мар. 2023, в 18:11
1000 руб./за проект