0

我想做一个即时跳转(以提高性能),而不是调用一个新函数或制作一个跳转表。我不知道为什么这段代码可以在我的编译器上运行,但它不能正确跳转:

__asm mov eax, __cmd
__asm jmp eax //Crash!

__cmd :
//Some code

我尝试了第二种方法,它也可以编译但不起作用:

int address = 10;
__asm jmp (__cmd + address) //Crash!

__cmd :
var += value;return;
var -= value;return;
var *= value;return;
var /= value;return;
var %= value;return;

但是,它只适用于常量:

__asm jmp (__cmd + 10) //works

为什么我的程序在执行间接跳转时会崩溃?有没有办法解决这个问题?

4

1 回答 1

0

根据评论,我找到了答案:

mov eax, offset __cmd

现在我可以实现间接跳转了。

于 2013-04-10T11:00:15.540 回答