我想做一个即时跳转(以提高性能),而不是调用新函数或制作跳转表。我不知道为什么这段代码适用于我的编译器,但它无法正常跳转:
__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
为什么我的程序在实现间接跳转时会崩溃?无论如何要解决这个问题吗?
答案 0 :(得分:0)
根据评论,我找到答案:
mov eax, offset __cmd
现在我可以实现间接跳转。