+ 4]
ret
main.c:
int main()
{
printf("eax: %08X\n", regGetEAX());
regSetEAX(255);
printf("eax: %08X\n", regGetEAX());
regSetEAX(0);
printf("eax: %08X\n", regGetEAX());
printf("eax: %08X\n", regGetEAX());
return 0;
}
На терминале:
eax: F7F9C7C8
eax: 000000FF
eax: 00000000
eax: 0000000E
eax: 0000000E
Почему меняется состояние регистра? И можно ли как-то его сохранить?
Когда ты вызываешь функцию, она создаёт свой контекст, и после выхода из функции контекст разрушается.
Если ты пытаешься хранить свою личную переменную в каком то регистре то это невозможно. Большенство регистров интенсивно используются в том коде который получается при компиляции.
Обсуждают сегодня