Question: How can I access a member variable in assembly from within a non-POD class?
Elaboration:
I have written some inline assembly code for a class member function but what eludes me is how to access class member variables. I’ve tried the offsetof macro but this is a non-POD class.
The current solution I’m using is to assign a pointer from global scope to the member variable but it’s a messy solution and I was hoping there was something better that I dont know about.
note: I’m using the G++ compiler. A solution with Intel syntax Asm would be nice but I’ll take anything.
example of what I want to do (intel syntax):
class SomeClass
{
int* var_j;
void set4(void)
{
asm("mov var_j, 4"); // sets pointer SomeClass::var_j to address "4"
}
};
current hackish solution:
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 :(
}
};
Those are crude examples but I think they get the point across.
This is all you need:
Edited to add: The assembler does accept Intel syntax, but the compiler doesn’t know it, so this trick won’t work using Intel syntax (not with g++ 4.4.0, anyway).