что смещения, используемые для доступа
стеке. Заметим, что смещения, используемые для доступа к данным в
стеке, учитывают тот факт, что адрес возврата также был записан в
стек в результате выполнения команды CALL.
В подпрограмме этого примера в вершине стека лежит адрес
возврата, и регистр BP содержит смещение этой ячейки. Двумя байтами
ниже в стеке лежит помещенный последним параметр, регистр DX;
далее, через двухбайтовые интервалы - регистры CX, BX и AX. Таким
образом, правильным адресом для чтения параметра, содержащегося в
регистре DX, будет [BP+2], а другие адреса следуют через
двухбайтовые интервалы. В данном примере значение, находившееся в
регистре DX, попадает в регистр AX, CX в BX и т.д.
Подпрограмма может использовать регистр BP для адресации стека
не только при передаче параметров. Подпрограмма может оказаться
длинной и запутанной настолько, что хранить все необходимые ей во
время выполнения значения в регистрах трудно. Помещение этих
значений в стек и загрузка указателя этой области в регистр BP
решает проблему.
Многим подпрограммам в течение их выполнения также необходима
локальная память, и подпрограммы могут динамически расположить ее в
стеке. Всякий раз, когда программа вызывается, она может вычесть
размер этой области памяти из содержимого указателя стека. Так как
стек растет по направлению к младшим адресам, вычитание числа из
регистра SP идентично помещению в стек такого же количества данных
- за исключением тех данных, которые не инициализированы. После
этого подпрограмма может использовать регистр BP для адресации
такой области памяти. Когда наступает момент возврата, подпрограмма
может прибавить соответствующее значение к указателю стека, и тем
самым восстановить его прежнее значение. Динамическая организация
данных означает, что программа использует область памяти только
тогда, когда она необходима для работы, и не занимает эту память
все остальное время, поэтому программу можно выполнять на машине с
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий