Как двоичный переводится на аппаратное обеспечение? - PullRequest
22 голосов
/ 05 октября 2009

Я понимаю, как код компилируется в сборку, и эта сборка является заменой 1:1 двоичными кодами. Может кто-нибудь помочь мне понять, как бинарный подключен к оборудованию? Как двоичный файл физически читается и запускается? Как оператор if работает в аппаратном обеспечении?

Из поисков Google Я думаю, что, возможно, мой вопрос должен быть озаглавлен " как двоичные данные помещаются в линию шины ", но я не был уверен.

Спасибо.

Ответы [ 14 ]

0 голосов
/ 05 октября 2009

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

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

И это все. Также есть управляющие команды, которые могут изменить ПК и которые используются для оператора «if ... then ... else».

0 голосов
/ 05 октября 2009

Вы можете найти эту интересную ссылку: http://www.eskimo.com/~ddf/Theory/Micro_Fund/Commands/AssyLnge.html

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

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

Таким образом, для оператора if существует команда для определения того, равны ли два значения и куда идти, если они не совпадают (ветвь, если она не равна). Будут некоторые другие, такие как ветвь равной или ветвь больше чем.

Они будут в сборке.

Команды заносятся в регистры с соответствующими аргументами, и они будут рассчитаны на следующем тактовом цикле.

Это очень упрощено, но в значительной степени то, что вы видите в сборке, это то, что увидит микропроцессор.

Более подробная информация, вероятно, выходит за рамки StackOverflow.

0 голосов
/ 05 октября 2009

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

Процессор поддерживает инструкции, которые при загрузке могут перемещать данные в / из памяти в регистры. Процессор перемещает данные в регистр команд, и эта инструкция выполняется на следующем такте.

Я не обладаю достаточной квалификацией, чтобы объяснять электротехнику, стоящую за этим, но вы, вероятно, могли бы это найти.

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

0 голосов
/ 05 октября 2009

(значительно упрощено)

Двоичный файл (скажем, строка двоичного файла из строки машинного кода / asm) загружается в память, скажем, с диска. Затем логика процессора отправляет инструкцию контроллеру памяти, чтобы загрузить содержимое памяти в локальный резистор процессора. Затем он интерпретируется как инструкция для процессора.

Я изучил этот уровень, занимаясь микрокодированием в колледже.

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

...