Базовый CS с нуля
Control flow: тест на свободное припоминание
Припоминание сильнее перечитывания. На каждый вопрос произнесите или запишите полный ответ по памяти, прежде чем открыть модельный, — именно усилие вытащить его и закрепляет механизм.
Восстановите хребет unit по памяти: что такое execution flow, как program counter его порождает, как сравнение плюс conditional jump делают branch, как backward jump делает loop и почему loop работает вечно.
- 01Что такое execution flow и что единственное его определяет?
- 02Почему sequential (straight-line) исполнение — это default и как PC его порождает?
- 03Объясните, как if становится сравнением плюс conditional jump на машинном уровне.
- 04Что значит fall-through и зачем if/else нужен безусловный jump после блока if-true?
- 05Что делает loop и почему while и for для CPU — одно и то же?
- 06Почему возникает infinite loop и может ли CPU его обнаружить?
Если вы смогли восстановить каждый ответ по памяти, у вас есть хребет unit: execution flow — это порядок реального исполнения инструкций, целиком задаваемый program counter; PC по умолчанию продвигается вперёд, давая straight-line код; сравнение выставляет флаг, а conditional jump читает его, чтобы сделать branch; if/else — это два адреса назначения для PC с jump-пропуском на границе; backward jump плюс тест наверху loop делают loop, одинаковый для while и for; а loop работает вечно, когда проверяемое значение никогда не меняется — чего CPU не может ни сосчитать, ни обнаружить.