Выравнивание таблицы операций перехода в FPC ASM
У меня есть таблица переходов примерно так:
jmp rax
@@table:
jmp @@seg1
jmp @@sge2
jmp @@seg3
...
Это прекрасно работало с пониманием того, что код jmp имеет длину два байта. Впоследствии я добавил код в @@seg? сегменты кода, которые теперь вызывают сбой при переходе на "более отдаленные" сегменты кода (метки).
Я пришел к выводу, что более длинные переходы кодируются с большей длиной, чем 2. К сожалению, дизассемблер, который я использую, останавливается на jmp rax
линия, поэтому я не могу подтвердить. Но вывод логичен.
Есть ли способ заставить компилятор выровнять jmp @@seg
? команды, скажем, 4 байта, чтобы у меня был достаточно большой и стабильный размер для таблицы переходов? Если это так, я мог бы обеспечить rax
с шагом в 4 с.
Я, конечно, не хочу начинать добавлять вручную nop
пытается решить это.