У меня есть класс с именем Person. Объект Person имеет только 1 частное свойство 'Age'.
Я пытался создать голую функцию сборки с параметром объекта Person.
Этот объект, который я хочу сохранить в регистре сборки, и попробуйте получить значение свойства age в этом сохраненном регистре.
Хранение объекта в реестре, надеюсь, хорошо сделано.
mov edx, dword ptr ds: [ebp + 0x8]
Но теперь я хочу взять возраст значения свойства объекта, который был сохранен в регистре EDX.
Я попробовал несколько вещей для получения значения, но я всегда получал данные.
Я только хочу сделать это во встроенной сборке регистров. без использования кода C ++ во встроенной сборке.
человек класса
#include "Person.h"
Person::Person()
{
}
void Person::SetAge(int age)
{
this->_age = age;
}
int Person::GetAge()
{
return this->_age;
}
__declspec(naked) void ObjectCall(Person* p)
{
int age;
_asm
{
mov ebp, esp // prologue
push ecx
mov edx, dword ptr ds:[ebp + 0x8] // Take full object in parameter and put it in edx register
mov ecx, 0x4
mov eax, dword ptr ds:[edx + ecx] // Trying for taking the property value of age in person object.
mov age, eax
}
std::cout << age << std::endl;
_asm
{
// epilogue
pop ecx
ret
}
}
int main()
{
Person p = Person();
p.SetAge(5);
ObjectCall(&p);
}