2016-10-22 2 views
0

のオフセットを取得する必要がありますは、私のように定義されたオブジェクトのメンバーを持つ構造体のデータメンバ

#define restorestate(SSB) \ 
    __asm mov ebx, this  \ 
    __asm mov esp, [ebx]SSB.sp\ 
    __asm jmp [ebx]SSB.label 
#endif 

私は関数のようなマクロを使用しています。 "mov ebx、this"の後、正しいメンバーに当たるためにebxにオフセットを追加する必要があります。 SSBのオフセットはどのように取得できますか?

+2

このメソッドをC++またはアセンブラで使用するかどうかはわかりませんが、C++では 'offsetof'を使用できます。 http://www.cplusplus.com/reference/cstddef/offsetof/ – Bertrand

+0

を参照してください。C++には、関数/演算子の 'offsetof'があります。 –

答えて

0

ソリューションでした:私は試行錯誤から得た

#define restorestate(SSB) \ 
    __asm mov ebx, this  \ 
    __asm add ebx, [SSB]  \ 
    __asm mov esp, [ebx]SSB.sp\ 
    __asm jmp [ebx]SSB.label 
#endif 

関連する問題