Как осуществить jmp на нужный мне адрес. Потом перевести в байткод

Интересует такой вопрос. Мне нужно совершить jmp из адреса FFFFC20AD0F8FFA0 в FFFFF80121214CE0. Как я понимаю надо рассчитать смещение и использовать jmp far, но информации об том как это сделать я не нашел. Хотелось бы узнать именно порядок действий jmp в нужный адрес -> машинный код.


Ответы (1 шт):

Автор решения: insolor

Для адресов с такой большой разницей (0x35f650284d40, больше двойного слова) сделать относительный прыжок не получится:

Но можно сделать переход по абсолютному адресу в регистре:

use64
; org 0xFFFFC20AD0F8FFA0 ; Т.к. прыжок по абсолютному адресу, начальный адрес указывать не обязательно
mov rax, 0xFFFFF80121214CE0
jmp rax

fasm компилирует в такой набор байт (в шестнадцатеричном виде):

48 B8 E0 4C 21 21 01 F8 FF FF FF E0
→ Ссылка