在FPC ASM中对齐跳转表操作

时间:2015-10-08 11:15:11

标签: assembly freepascal lazarus jump-table

我有一个像这样的跳转表:

jmp  rax

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

这完全符合jmp代码长度为两个字节的理解。我随后在@@ seg中添加了代码?代码段,当跳转到“更远的”代码段(标签)时,现在导致崩溃。

我得出结论,长跳转的编码长度大于2.不幸的是,我使用的反汇编停在jmp rax行,所以我无法确认。但结论是合乎逻辑的。

有没有办法让编译器对齐jmp @@seg?说4个字节的命令,这样我就可以保证足够大且一致的跳转表大小?如果是这样,我可以在4s内确保rax增量。

我当然不想手动添加nop以试图解决此问题。

0 个答案:

没有答案