【发布时间】:2011-04-05 21:21:17
【问题描述】:
所以我一直在使用 VS2010 中的 __asm 块,但找不到更好的方法来获取指向组装块开头的指针。
我知道如何做到这一点的唯一方法是声明一个 void 函数。这样做的一个问题是 void 函数在我的程序集块之前和之后都有自己的程序集,我必须通过获取函数的实际地址并添加偏移量来进行补偿。
例子:
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() 如果执行很可能会出错。
【问题讨论】:
标签: c++ visual-studio pointers inline-assembly