Я не знаю, как процессор знает, какую ячейку памяти нужно поместить в счетчик программ (набор команд), прежде чем он действительно начнет выполнять эту конкретную инструкцию.
На самом деле это не так сложно.
Регистр счетчика программ (он же ПК) содержит адрес памяти (следующей) инструкции для (извлечения и) выполнения.
(Предполагая, что мы используем процессор с архитектурой стека.)
При перезагрузке процессора (например, после включения питания) ПК автоматически загружается с предопределенным адресом, который, как ожидается, будет местом расположения первой инструкции программы начальной загрузки.
Если выполняемая инструкция представляет собой операцию ветвления, перехода или вызова, то целевой адрес вычисляется и загружается в регистр ПК. Следующая инструкция (извлекается и) выполняется с этого целевого адреса.
Когда выполняемая инструкция является операцией возврата, тогда адрес возврата извлекается из стека и загружается в регистр ПК. Следующая инструкция (извлекается и) выполняется с этого обратного адреса.
Для всех других инструкций регистр ПК просто увеличивается (т. Е. « Подсчитывает »), чтобы перейти к следующей инструкции в памяти. То есть инструкции (выбираются и) выполняются последовательно (до тех пор, пока не будет выполнена команда типа ветвления или пока не произойдет прерывание).
Если происходит прерывание, то, когда текущая инструкция завершается, содержимое обновленного регистра ПК переносится в стек (для последующего использования в качестве адреса возврата). В регистр ПК загружается адрес обработчика прерываний, который затем выполняется.