-5

Я не понимаю, как процессор знает, когда ему нужно указать или посмотреть определенное место, где хранится какой-то машинный формат инструкции? Точно, я не знаю, как процессор знает, какую ячейку памяти он должен поместить в счетчик программ (набор команд), прежде чем он действительно начнет выполнять эту конкретную инструкцию. Я надеюсь, что этот вопрос не слишком смущает, потому что я потерян:D

2 ответа2

0

Я не знаю, как процессор знает, какую ячейку памяти нужно поместить в счетчик программ (набор команд), прежде чем он действительно начнет выполнять эту конкретную инструкцию.

На самом деле это не так сложно.
Регистр счетчика программ (он же ПК) содержит адрес памяти (следующей) инструкции для (извлечения и) выполнения.
(Предполагая, что мы используем процессор с архитектурой стека.)

  • При перезагрузке процессора (например, после включения питания) ПК автоматически загружается с предопределенным адресом, который, как ожидается, будет местом расположения первой инструкции программы начальной загрузки.

  • Если выполняемая инструкция представляет собой операцию ветвления, перехода или вызова, то целевой адрес вычисляется и загружается в регистр ПК. Следующая инструкция (извлекается и) выполняется с этого целевого адреса.

  • Когда выполняемая инструкция является операцией возврата, тогда адрес возврата извлекается из стека и загружается в регистр ПК. Следующая инструкция (извлекается и) выполняется с этого обратного адреса.

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

  • Если происходит прерывание, то, когда текущая инструкция завершается, содержимое обновленного регистра ПК переносится в стек (для последующего использования в качестве адреса возврата). В регистр ПК загружается адрес обработчика прерываний, который затем выполняется.

0

После некоторых исследований я нашел ответ. В самом начале CPU получает адрес инициализации нашего приложения, когда наше приложение запускается, например, этот адрес обычно равен 0x00000000 для 32-битной инфраструктуры, после того, как начальная микропрограмма запускается и на основании адреса инициализации он предоставляет счетчику программ место в памяти, где инструкция хранится. Просто извините, потому что я отправляю здесь сложный вопрос до того, как проведу исследование. Я надеюсь, что кто-то найдет это полезным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .