Поскольку я использую objdump -D
для дизассемблирования двоичного файла, типичный код jmpq
похож на e9 7f fe ff ff
, который используется для представления отрицательного смещения. Однако адрес x86-64 равен 64 (48) -битам (насколько мне известно), поэтому как этот 32-разрядный адрес 7f fe ff ff
представляет отрицательное смещение 64-битного абсолютного адреса?
Кроме того, существуют ли какие-либо другие команды, такие как jmp
и jmpq
, но имеющие 64-разрядное смещение адреса? Как найти инструкции в руководстве Intel или AMD (я искал jmpq
, но ничего не нашел)?
Когда я искал, он, как представляется, называется RIP-относительной адресацией. И кажется, что не все инструкции делают это. Есть ли 64-битная относительная адресация? Если это косвенный скачок, 64-разрядный абсолютный адрес будет в регистре или памяти, верно?