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
为什么我的程序在执行间接跳转时崩溃?无论如何要解决这个问题吗?
也许你需要写'mov eax,offset __cmd'?我强烈建议不要做你在做的事情。你很可能会优化错误的东西,而且只会遇到很多麻烦。 – 2013-04-10 10:55:24
@Alexey Frunze我尽我所能,不惜一切代价提高性能,是的实施它是相当危险的,但它不是错误的事情。因为至少我必须处理我的19个运营商总数。事实上,它减少了我执行时间的1/8。 :) – xersi 2013-04-10 13:16:51