gpt4 book ai didi

c++ - 指向 C++ 中内联 __asm block 的指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:25 24 4
gpt4 key购买 nike

所以我一直在 VS2010 中使用 __asm block ,但我没能找到更好的方法来获取指向汇编 block 开头的指针。

我知道如何做到这一点的唯一方法是声明一个 void 函数。一个问题是 void 函数在我的程序集 block 之前和之后都有自己的程序集,我必须通过获取函数的真实地址并添加偏移量来进行补偿。

例子:

C++

void myfunc(){
__asm{
nop
nop
nop
ret
}
}

会产生类似这样的装配:

push ebp
mov ebp,esp
add esp,8
nop
nop
nop
retn
mov esp,ebp
pop ebp
retn

myfunc() 如果执行,很可能会出错。

最佳答案

您基本上想要在您的函数上启用 __declspec(naked),以避免编译器生成的序言和结尾。

另请参阅:http://msdn.microsoft.com/en-us/library/h5w10wxs(v=vs.80).aspx

关于c++ - 指向 C++ 中内联 __asm block 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5552473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com