Как процессор "знает", что означают различные команды?
Я думаю о командах уровня сборки, таких как MOV, PUSH, CALL и т. д...
Как процессор "знает", что означают различные команды?
Я думаю о командах уровня сборки, таких как MOV, PUSH, CALL и т. д...
когда компьютер воспринимает сборка инструкции эти инструкции включены в их двоичные эквиваленты для процессора для чтения. Когда процессор выполняет инструкции, он интерпретирует часть опкода инструкции в отдельные "микропрограммы", содержащие их микрокода эквиваленты. Просто, чтобы вы знали, полная инструкция по сборке состоит из опкода и любых применимых данных, которые идут с ним, если требуется (например, имена регистров, память адреса.)
инструкции микрокода весьма низкоуровневы (более так после этого собрание), и контролируют фактические цифровые сигналы которые контролируют подачу логики в микропроцессоре. Например, одна инструкция микрокода может обновить регистр кода условия флаг с новым значением, или подключить процессор зарегистрироваться С ALU единиц. Более сложные задачи возможны, но это показывает вам общее представление о что для этого используется микрокод.
общий поток от компиляции к исполнению производится следующим образом. Инструкции по сборке собраны (превращены в их двоичный эквивалент 0s и 1s, или отныне, логические сигналы). Эти логические сигналы, в свою очередь, интерпретируются процессором и превращаются в более низкоуровневые логические сигналы, которые направляют поток процессора для выполнения конкретной инструкции. Это может занять один или более тактов, в зависимости от архитектуры и дизайна процессора (большинство процессорные справочники расскажут вам, сколько тактов требуется для выполнения конкретной инструкции,как этот например).
все это делается с помощью жестко запрограммированного микрокода (физически встроенного в процессор в какой-то ROM, установленный во время производства), который направляет подачу через фактическое низкоуровневое логические ворота. Это обеспечивает интерфейс между абстрактными инструкциями по сборке и электрическая логика в процессоре.
Так, в резюме, инструкции процессора собран и загружен процессор. Затем процессор будет использовать эти инструкции для поиска микропрограммы (в виде микрокода), соответствующей этой конкретной инструкции, которая "на самом деле" выполняет инструкцию. Как только были исполнены микрокоды для определенной инструкции (которая может принять одни или больше такты), процессор исполняет микрокод для извлечения следующей инструкции, и цикл повторяется.
процессор не "знает", какие команды. Команды-это просто двоичные шаблоны, которые заставляют процессор делать то, что мы интерпретируем команды.
например, операция ADD-R1-into-R2 приведет к тому, что значения регистров 1 и 2 достигнут ALU (арифметического и логического блока), заставит ALU использовать выход сумматора вместо различных других материалов и заставит выход ALU заменить значение в Регистре 2. Есть простая логика схемы для достижения всех этих вещей (мультиплексор,adder,счетчик, ...), хотя реальные процессоры используют очень сложные оптимизации.
Это sortof, как вы спрашиваете, как автомобиль умеет тормозить при нажатии тормоза. Автомобиль не знает, педаль тормоза просто косвенно контролирует, как жесткие подушки прижаты к колесам.
Возьмем, к примеру, инструкция это говорит процессору x86 / IA-32 двигаться непосредственное 8-разрядное значение в реестр. Двоичный код инструкция 10110 следовать а 3-битный идентификатор, для которого регистр использовать. Идентификатор для AL регистр 000, поэтому следующее машинный код загружает регистр AL с данными 01100001.
10110000 01100001
этот двоичный программный код можно сделать более человека-читаем выражая это в шестнадцатеричный следующим образом
B0 61
здесь B0 означает " переместить копию номиналом в АЛ', и 61 шестнадцатеричное представление значение 01100001, которое 97 внутри десятичное число. Язык сборки Intel обеспечивает мнемоническое движение ( аббревиатура move) для инструкций как это, так код машины выше можно написать следующее язык ассемблера, с пояснительный комментарий, если требуется, после точка с запятой. Это гораздо легче читать и запоминать.
http://en.wikipedia.org/wiki/Assembler_language
другими словами, когда вы "собираете" свою программу сборки, ваши инструкции, такие как
MOV AL, 61h
преобразуются в числа, которые процессор связывает с особым значением, а затем действует соответствующим образом.
рекомендуемое чтение:
также проверить заметки курса из CS152: компьютерная архитектура и строительство в Беркли, поле, в котором студенты реализуют процессор.
Если вы google для "домашний процессор" вы найдете много положительных героев.
на крайнем самом низком уровне, все процессор может сделать, это добавить. Из сложения он может вычитать, умножить и разделить (видя, что это просто сложение по-другому). Процессор использует для перемещения данных в памяти путем применения дополнений к адресам памяти.
имейте в виду, что это на самом низком уровне. Процессор действительно "понимает" определенные команды в виде микрокода. См. ответ прорыва, это очень хорошо написано.
Я дал связанный ответ на programmers.stackexchange.com, see Как работают компьютеры? где я кратко обо всем с нуля рассказал о том, как компьютеры интерпретируют инструкции для движущихся электронов.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]