Понимание инструкции callq в сборке - PullRequest
1 голос
/ 08 мая 2020

Я новичок в ассемблере. Во время анализа файла coredump я хотел понять вызов функции на уровне сборки.

После поиска в Google обнаружил, что callq - это инструкция для вызова функции.

  Syntax:
      callq "function Name"

Однако в основном файле синтаксис другой.

          10cd52f:   ff 90 10 02 00 00       callq  *0x210(%rax) 

Пожалуйста, дайте мне знать, что это значит?

1 Ответ

2 голосов
/ 08 мая 2020

Это инструкция косвенного вызова: она загружает q-слово памяти из 0x210(%rax) и вызывает функцию по адресу, найденному в этом слове. Вы можете сказать, что это косвенный вызов из * перед операндом. За подробностями обращайтесь к справочнику по набору команд и руководству по ассемблеру GNU.

Нормальные относительные вызовы имеют синтаксис, описанный выше:

call function

обратите внимание, что суффикс q может быть опущен.

...