Как работает стек в случае локальных переменных?

Правильно ли я понимаю что когда у нас есть условно код

a = 5;
b = 3;
c = a + b;

при компиляции у нас произойдет следующее компилятор выделит под переменную a 4 байта и положит их по адресу смещения 0 от начала фрейма стека принадлежащему данной процедуре далее переменную b положит в следующие 4 байта с смещением уже 4 байта и т.д. т.е. компилятор переводит это в следующие инструкции стирая переменные вобще

положи в первые 4 байта цифру 4
положи в 4 байта начиная с пятого цифру 3
возьми из первые 4 байт и сложи с 4 байтами начиная с 5 до 8

т.е. переменные вобще стерты и заменены адресами в стеке начиная с начала стека конкретной процедуры, верно?

Тогда не совсем понятно как это работает с интерпретируемым языками там ведь код выполняется построчно и мы не можем заранее заменить все переменные адресами. Или там они размещаются не в стеке, а в куче? Поясните пожалуйста как работает стек с локальными переменнами на примере или подскажите где подробней почитать.


Ответы (0 шт):