我有一个对象的成员定义为:
struct statebuf
{
void* sp;
void* label;
};
在我的asm代码中我做了:
#define restorestate(SSB) \
__asm mov ebx, this \
__asm mov esp, [ebx]SSB.sp\
__asm jmp [ebx]SSB.label
#endif
我像一个函数一样使用宏。在“mov ebx,this”之后,我需要为ebx添加一个偏移量来击中正确的成员。如何获得SSB的偏移?
答案 0 :(得分:0)
解决方案是:
#define restorestate(SSB) \
__asm mov ebx, this \
__asm add ebx, [SSB] \
__asm mov esp, [ebx]SSB.sp\
__asm jmp [ebx]SSB.label
#endif
我从试错中得到的。