需要得到结构数据成员

时间:2016-10-22 19:26:25

标签: c++ visual-studio assembly visual-studio-2015

我有一个对象的成员定义为:

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的偏移?

1 个答案:

答案 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

我从试错中得到的。