ВУЗ:
Составители:
Рубрика:
102
Стек
1
- это очередь, работающая по принципу: последний пришел - пер-
вый обслуживается. В компьютере стек - это память (организованная так ап-
паратно или программно), которую можно мыслить как некий "карман" (ме-
шок), расположенный вертикально и у которого есть верх и низ. Стек сооб-
щается с внешним миром только через открытый верх. Со стеком
можно вы-
полнить только две операции: положить (записать) в него сверху и взять
(прочитать), то что лежит наверху. При записи новых данных в стек его со-
держимое опускается вниз на одну по зицию, а последние записанные дан-
ные остаются в качестве верхушки стека. Прочитанные данные изымаются из
стека и его
содержимое поднимается вверх на одну позицию, чтобы занять
верхнюю освободившуюся ячейку.
Важной харктеристикой стека является его размер, то есть сколько еди-
ниц данных (слов, байтов) в него можно положить. Если стек переполняется,
то либо запись в него новых данных становится невозможной, либо происхо-
дит потеря сохранненных ранее данных вни зу стека
.
Логика вызова подпрограмм с помощью стека состоит в следующем. Не-
посредственно перед обращением (вызовом) подпрограммы в стек помещает-
ся адрес (или метка) команды (оператора), которая следует непосредственно
за вызовом процедуры и должна выполняться сразу после возврата из под-
программы. После этого управление передается подпрограмме с помощью
безусловного перехода на ее
начало. Подпрограмма после выполнения тре-
буемых действий осуществляет возврат, который заключается в том, что из
стека читается адрес (метка) и производится безусловный переход по этому
адресу. Использование стека для передачи подпрограмме адреса возврата
обеспечивает две важные особенности:
-
при написании подпрограммы не требуется знать, кто и откуда будет ее
вызывать, эта информация просто берется из стека в момент исполнения;
именно это автоматически обеспечивает возможность многократного
вызова одной и той же подпрограммы из произвольных мест программы;
-
изнутри подпрограммы можно вызывать другие подпрограммы, в том
числе, при некоторых дополнительных условиях, и саму себя (рекурсив-
ный вызов); глубина вложенности таких вызовов может быть произволь-
ной и ограничивается только размером стека.
При необходимости передать подпрограмме данные аналогичным обра-
зом (в качестве "почтового ящика") используется стек. Обычно для этих це-
лей
используется тот же стек, что и для запоминания адресов возврата, но это
не обязательно. Для правильной работы этого механизма важно только четко
соблюдать согласование количества и порядка размещения данных в стеке.
Перед обращением к подпрограмме нужно поместить данные в стек в том
1
От англ. stack - куча, груда, пачка, стопка, как правило, упорядоченные; в техни-
ке - магазин (например у стрелкового автомата)
Страницы
- « первая
- ‹ предыдущая
- …
- 100
- 101
- 102
- 103
- 104
- …
- следующая ›
- последняя »