为什么我的程序在实现间接跳转时会崩溃?

时间:2013-04-10 10:52:26

标签: c++ assembly visual-c++ x86

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

__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

为什么我的程序在实现间接跳转时会崩溃?无论如何要解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

根据评论,我找到答案:

mov eax, offset __cmd

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