#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/offsetof2. В 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
Которое я получил методом проб и ошибок.