Основы программирования


Аппаратный стек и локальные переменные подпрограммы - часть 3


c<=SP
b
a
старое значение FP<=FP
адрес возврата
x=222
y=333
...

Аргументы и локальные переменные функции ? адресуются относительно регистра FP. Так, аргумент x имеет адрес FP+8, аргумент y - адрес FP+12. Переменная a имеет адрес FP-4, переменная b - адрес FP-8, переменная c - адрес FP-12.

По окончании работы функция ? сначала увеличивает указатель стека на 12, удаляя таким образом из стека свои локальные переменные a, b, c. Затем старое значение FP извлекается из стека и помещается в FP (таким образом, регистр FP восстанавливает свое значение до вызова функции ?). После этого осуществляется возврат в вызывающую программу: адрес возврата снимается со стека и управление передается по адресу возврата. Результат функции ? передается через нулевой регистр.

R0 := результат функции SP := SP +12 pop FP return

Вызывающая программа удаляет из стека фактические значения аргументов x и y, помещенные в стек перед вызовом функции ?.




Начало  Назад  



Книжный магазин