Вопрос: Как получить доступ к переменной-члену в сборке из класса, отличного от POD?
Разработка:
Я написал несколько встроенных ассемблерных кодов для функции-члена класса, но мне не хватает того, как получить доступ к переменным-членам класса.Я пробовал макрос offsetof , но это не POD класс.
Текущее решение, которое я использую, заключается в назначении указателя из глобальной области видимости переменной-члену, но этогрязное решение, и я надеялся, что есть что-то лучшее, о чем я не знаю.
note: Я использую компилятор G ++.Решение с синтаксисом Intel Asm было бы неплохо, но я возьму что угодно.
пример того, что я хочу сделать (синтаксис Intel):
class SomeClass
{
int* var_j;
void set4(void)
{
asm("mov var_j, 4"); // sets pointer SomeClass::var_j to address "4"
}
};
текущее хакерское решение:
int* global_j;
class SomeClass
{
int* var_j;
void set4(void)
{
asm("mov global_j, 4"); // sets pointer global_j to address "4"
var_j = global_j; // copy it back to member variable :(
}
};
Это грубые примеры, но я думаю, что они понимают суть.