Насколько я понимаю, MASM не поддерживает этот тип прыжка. У вас есть несколько вариантов:
mov eax, 12345678h
jmp eax
или
push 12345678h
ret
Первый использует регистр, второй снижает производительность, так как он гремит оптимизации сопряжению CALL/RET в CPU. Я думаю, вы также можете использовать типизированную константу или локальную переменную - это также потребляет несколько лишних байтов. Я не думаю, что есть какой-либо другой способ, ни прямые, однолинейные средства для такого прямого перехода, как в MASM.
caveat: предполагается, что вы работаете в коде x86. Ваш OP предлагает столько же от размера аргумента jmp, но если это x64, тогда ответ, очевидно, будет другим.
Будет ли место памяти всегда находиться в одном месте? Разумеется, местоположение будет вычисляться при запуске подпрограммы и использует любую память на компьютере. Относительный jmp использует код E9. В 32-разрядном режиме x86 переход на один прыжок вперед (выраженный как длинный прыжок) - это машинный код E9 01 00 00 00. A dd 01E9 и db 0 могут реплицироваться (dw 0 мне нужно). Относительные короткие прыжки не всегда срабатывают. Правильно, или окна идут бум. – ady