1

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

jmp  rax

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

这在理解 jmp 代码长度为两个字节的情况下完美地工作。我随后将代码添加到 @@seg? 代码段,现在在跳转到“更远”的代码段(标签)时会导致崩溃。

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

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

我当然不想开始手动添加nop' 来解决这个问题。

4

0 回答 0