необходимо получить смещение элемента данных структуры

#c #visual-studio #assembly #visual-studio-2015

#c #visual-studio #сборка #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
  

Я использую макрос как функцию. После «переместить ebx, это» мне нужно добавить смещение в ebx, чтобы попасть в нужный элемент. Как я могу получить смещение для SSB?

Комментарии:

1. Не уверен, нужен ли вам этот метод на c или на ассемблере, но на c вы можете использовать offsetof . Смотрите cplusplus.com/reference/cstddef/offsetof

2. В C есть offsetof функция / оператор.

Ответ №1:

Решение было:

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

Которое я получил методом проб и ошибок.