awesome-everything EN
↑ Обратно к восхождению

Базовый CS с нуля

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

Суть Подсказки на свободное припоминание по всему юниту. Сначала ответьте по памяти, затем откройте образцовый ответ и сравните — именно припоминание закрепляет механизм.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 13 min

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

Цель

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

Вспомните перед уходом
  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.