Оперативная память
04d1509c

В 2 Распределение пространства стека в порядке увеличения адресов



Таблица В.2. Распределение пространства стека в порядке увеличения адресов

Общедоступная область стека
Промежуточные переменные подпрограммы
Исходное содержимое регистра bр или ebp
Адрес возврата из подпрограммы
Параметры подпрограммы
Недоступная часть стека

Общедоступная область расположена в начале стекового сегмента, ее минимальный адрес (смещение) равен нулю, а максимальный хранится в указателе стека (в регистре sp). Обычно она используется для хранения содержимого регистров и передачи параметров вызываемым подпрограммам.

Место для промежуточных переменных резервирует подпрограмма, если в этом есть необходимость. Она же сохраняет в стеке исходное содержимое регистра bpли ebp при работе в 32-разрядном режиме. Во время выполнения подпрограммы адрес, в котором сохранено исходное значение регистра bp(или ebp), используется в качестве базы для доступа команд к параметрам или промежуточным переменным.

Адрес возврата и параметры размещает в стеке основная задача, вызывающая данную подпрограмму. При входе в подпрограмму указатель стека содержит адрес первого свободного слова, в которое обычно помещается исходное значение регистра bpли ebp.

Недоступная часть стека названа так не потому, что она физически недоступна, а потому, что подпрограмма не должна изменять хранящиеся там данные. Если перед размещением параметров стек был полностью очищен, то недоступной области просто не существует.



Содержание раздела