Инструкции по доступу к процессору

244
Newbie

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

-5
Я думаю, что этот вопрос слишком широк. Это довольно длинная и сложная тема для описания. Я бы исследовал счетчик программ и немного читал об этом. Если вы найдете что-то более конкретное, вы можете задать новый вопрос. DrZoo 7 лет назад 0
Я боялся, что это было слишком широко, я попытаюсь исследовать, как вы говорите. Newbie 7 лет назад 0
Это делает для очень интересного чтения, но может быть запутанным основанным на знании, которое кто-то имеет. Из своего личного опыта я узнал, как это работает, посещая занятия по компьютерной архитектуре, программированию на ассемблере и операционным системам. Компьютерная архитектура - это то, где меня учили, как она работает, сборка и ОС были для меня просто бонусом. Вот материал по [PC (счетчик программ) и IR (регистр инструкций)] (https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Overa/pc_ir.html). Это коротко, но я думаю достаточно, чтобы помочь вам понять, с чего начать. DrZoo 7 лет назад 0
CPU знает из-за инструкции CPU, которая в данный момент обрабатывается. Вы должны сделать еще несколько исследований и редактировать этот вопрос. Ramhound 7 лет назад 0
Да, это интересно, и ваш материал правильный. Program Counter - плохое название для того, что Program Counter делает xD. Newbie 7 лет назад 0

2 ответа на вопрос

0
sawdust

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

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

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

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

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

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

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

0
Newbie

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

Похожие вопросы