定义要与内联程序集JMP指令一起使用的变量/标签



I有一个带有内联汇编的函数,该函数具有以下定义:

void __declspec(naked) func()
{
__asm 
{
//...
JMP [address]
//...
}
}

这个地址变量只有在运行时才知道,主要是我有:

int main()
{
//...
DWORD address = getAddress();
func();
//...
}

与此类似,代码不会编译,并显示以下错误消息:

错误C2094:标签"地址"未定义

  1. 知道我不能将地址作为参数传递给func()函数,我该如何解决这个问题?

  2. 我可以在命名空间中定义地址吗?这会是一个好的做法吗?命名空间是否可以用于提升变量的作用域(在不同的函数/作用域中使用此变量(?

如果您在C++中,当您在堆栈中留下具有类实例的块时,必须调用析构函数,JMP不会出现这种情况,我也不会谈论堆栈指针/帧的值

C++有异常,请使用它们,例如,在argument中给定要在汇编部分中调用的无参数函数的地址,而该函数throw是您想要的异常,并在您想要进行的目的地放置try-catch

最新更新