open atlas
↑ К треку
Базовый CS с нуля CS · 08 · 08

Функции и стек вызовов: обзор на припоминание

Подсказки на свободное припоминание по всему юниту. Сначала ответьте по памяти, затем откройте образцовый ответ и сравните — именно припоминание закрепляет механизм.

CS Middle ◷ 13 min
Уровень
ОсновыJuniorMiddleSenior

Припоминание сильнее перечитывания. Для каждой подсказки произнесите или запишите полный ответ по памяти, прежде чем открыть образцовый, — именно усилие вытащить механизм из головы закрепляет его.

Цель

Восстановите спину юнита по памяти — что такое функция на уровне машины, что хранит кадр стека, как параметры и значения возврата пересекают границу, почему область видимости и время жизни заканчиваются вместе с кадром, и что рекурсия делает со стеком.

Вспомните перед уходом
  1. 01
    Что такое функция на уровне машины и что именно делает инструкция CALL?
  2. 02
    Что содержит кадр стека и когда он кладётся и снимается?
  3. 03
    Почему стек вызовов работает по принципу LIFO и что это значит для того, какой кадр завершается первым?
  4. 04
    Как параметры попадают в функцию и как значение возврата выходит, и почему передача по значению безопасна?
  5. 05
    В чём разница между областью видимости локальной переменной и её временем жизни, и что с ней происходит при возврате функции?
  6. 06
    Что такое рекурсия в терминах стека, каковы её две части и что вызывает переполнение стека?
Итог

Если вы смогли восстановить каждый ответ по памяти, вы держите спину юнита: функция — это именованный адрес, CALL сохраняет адрес возврата и переходит, каждый вызов кладёт LIFO-кадр из адреса-возврата-плюс-локальные-переменные, параметры копируются внутрь, а значение возврата приходит наружу через эту границу, область видимости и время жизни локальной переменной заканчиваются при снятии её кадра, а рекурсия — это та же укладка кадра, повторённая снова, ограниченная только достижимым базовым случаем до переполнения стека.

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.