мой вопрос: когда у меня есть что-то вроде этого:
lea rax, rbp - 8
// Возможно, это int в моем стеке, потому что в моем коде есть локальная переменная "int". Как процессор узнает, где находятся данные, когда я делаю это:
mov qword [rax], 14
Я имею в виду, это просто адрес... Что, если бы я зарезервировал память по адресу 2^64 - x
?
Разве ваша выделенная память не может иметь такой адрес?
Или что, если стек вырос до тех пор, пока его адреса не сравняются с выделенной вам памятью?
Такое бывает?
Ассемблер не знает, что такое число в rax, поэтому это не может быть MOVstack и MOVheap, как в случае с ближним и дальним JMP.