Выравнивание таблицы операций перехода в FPC ASM

У меня есть таблица переходов примерно так:

jmp  rax

@@table:
jmp @@seg1
jmp @@sge2
jmp @@seg3
...

Это прекрасно работало с пониманием того, что код jmp имеет длину два байта. Впоследствии я добавил код в @@seg? сегменты кода, которые теперь вызывают сбой при переходе на "более отдаленные" сегменты кода (метки).

Я пришел к выводу, что более длинные переходы кодируются с большей длиной, чем 2. К сожалению, дизассемблер, который я использую, останавливается на jmp rax линия, поэтому я не могу подтвердить. Но вывод логичен.

Есть ли способ заставить компилятор выровнять jmp @@seg? команды, скажем, 4 байта, чтобы у меня был достаточно большой и стабильный размер для таблицы переходов? Если это так, я мог бы обеспечить rax с шагом в 4 с.

Я, конечно, не хочу начинать добавлять вручную nopпытается решить это.

0 ответов

Другие вопросы по тегам