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

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

Что такое двоичный?

Двоичная - это система счисления с основанием 2, которую процессоры и память используют для выполнения кода. Двоичные числа могут быть только 1 или 0, отсюда и его название. Если вы сгруппируете восемь двоичных чисел (00000000), вы получите так называемый байт, а одно двоичное число (0) называется битом.

Как простой переключатель генерирует двоичные сигналы

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

Кредит изображения: 991joseph /Wikimedia Commons

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

Когда вы щелкаете переключателем, он производит сигнал или один бит данных. Обычная фотография, сделанная со смартфона, будет содержать около пяти мегабайт данных, что соответствует 40 000 000 бит. Это означает, что вам нужно щелкнуть переключателем десятки миллионов раз, чтобы получить достаточно данных для одной фотографии, снятой со смартфона.

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

Транзисторы, используемые в качестве переключателя

Изображение транзистора: Эван-Амос /Викимедиа и изображение квадратной волны. Кредит: Sponk /Викимедиа

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

Что такое архитектура процессора?

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

Архитектура ЦП также определяет ISA (архитектура набора команд) процессора. ISA содержит встроенный список инструкций, которые ЦП может выполнять изначально. Эти инструкции затем последовательно смешиваются вместе с помощью языка программирования, чтобы создать так называемую программу. Обычно в процессоре легко доступны сотни инструкций, включая сложение, вычитание, перемещение, сохранение и загрузку.

Вот пример набора инструкций:

Образец набора инструкций

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

Синтаксис-инструкция-ассемблер

После кода операции следует операнд. Операнд содержит значения и адреса, где будет использоваться код операции.

На схеме показана 8-битная инструкция. Если ЦП имеет 64-битную архитектуру, то ширина инструкций может достигать 64 бит, что делает его более мощным процессором.

Связанный: Чем отличаются процессоры RISC и CISC?

Ассемблер

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

Например, если наш ассемблер использует стандарт ASCII (Американский стандартный код для обмена информацией), наш ассемблер возьмет указанный машинный код и интерпретирует его так же, как из ASCII в таблице ниже.

00101001 А 00101111 г 00110101 M 00111011 S 01000001 Y
00101010 B 00110000 ЧАС 00110110 N 00111100 Т 01000010 Z
00101011 C 00110001 я 00110111 0 00111101 U
00101100 D 00110010 J 00111000 п 00111110 V
00101101 E 00110011 K 00111001 Q 00111111 W
00101110 F 00110100 L 00111010 р 0100000 Икс

Поскольку наш ассемблер использует ASCII (8-битная версия), каждые восемь двоичных чисел в двоичном формате интерпретируются как один символ. Ассемблер берет этот байт и интерпретирует его в соответствии с данными стандартами. Например, 01000001 01101001 01010100 будет переводиться в слово «бит».

Понимание языка ассемблера

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

Вот пример простого ассемблерного кода с использованием набора инструкций, показанного ранее:

1. ЛОДА №5 
2. ЛОДБ №7
3. ДОБАВИТЬ R3
4. УЛИЦА М12

Этот блок кода хранится в ОЗУ до тех пор, пока ЦП не выберет каждую строку кода одну за другой.

Цикл выборки, декодирования и выполнения ЦП

ЦП выполняет код в цикле, известном как выборка, декодирование и выполнение. Эта последовательность показывает, как ЦП обрабатывает каждую строку кода.

Принести: Счетчик команд в ЦП берет одну строку команд из ОЗУ, чтобы ЦП знал, какую команду выполнять следующей.

Расшифровать: Ассемблер декодирует читаемый человеком блок кода и собирает его как правильно отформатированные двоичные файлы, чтобы компьютер мог их понять.

1. 00010101 
2. 00100111
3. 00110011
4. 01011100

Выполнять: Затем ЦП выполняет двоичные файлы, применяя инструкции, указанные кодом операции, к предоставленным операндам.

Компьютер будет выполнять это следующим образом:

  1. Загрузите первый регистр с 5
  2. Загрузите второй регистр с 7
  3. 5 + 7 = 12, сохранить 12 в третий регистр
  4. Сохраните значение третьего регистра в адресе RAM M12.

Компьютер успешно сложил два числа и сохранил значение по указанному адресу RAM.

Здорово! Теперь вы знаете, как компьютер выполняет код. Однако это еще не все.

Идти дальше

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

Что такое компилятор и интерпретатор?

Компилятор и интерпретатор - это программы-переводчики, которые берут исходный код (программы, созданные из языков программирования высокого уровня) и переведет их на язык ассемблера, который затем декодирует ассемблер. в двоичный.

An устный переводчик возьмет одну строку кода и немедленно выполнит ее. Обычно это используется на таких терминалах, как терминал Linux Bash Shell и терминал Windows PowerShell. Отлично подходит для выполнения простых разовых задач.

Кредит изображения: Rlistmedia /Викимедиа Common

Напротив, компилятор возьмет несколько строк кода и скомпилирует их для создания программы. Примерами этих программ могут быть Microsoft Word, Photoshop, Google Chrome, Safari и Steam.

С созданием компиляторов и интерпретаторов были созданы языки программирования высокого уровня.

Языки программирования высокого уровня

Языки программирования высокого уровня - это любой язык после кода ассемблера. Некоторые из этих языков, с которыми вы, возможно, знакомы, - это C, Python, Java и Swift. Эти языки программирования сделали программирование более понятным и простым, чем язык ассемблера.

Вот параллельное сравнение, чтобы проиллюстрировать, насколько сложнее программировать на ассемблере, чем на языке программирования высокого уровня, таком как Python:

Оба кода напечатают «Hello World».

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

Связанный: Python vs. Java: лучший язык на 2022 год

Компьютеры могут выполнять любой код

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

ЦП выполняет код в последовательности, известной как цикл выборки, декодирования и выполнения. Как только фрагмент кода загружен в ОЗУ, ЦП будет извлекать его содержимое одно за другим, декодировать содержимое в двоичный код через ассемблер, а затем выполнять код.

Поскольку ассемблер может транслировать только код, созданный явно для архитектуры ЦП, компиляторы и интерпретаторы были построены поверх ассемблера (во многом как адаптер) для работы на разных типах ЦП. архитектура. Интерпретатор примет одну команду и немедленно ее выполнит. Напротив, компилятор примет все ваши команды и скомпилирует их в программу многократного использования.

Языки программирования высокого уровня, такие как Python, C и Java, были созданы, чтобы сделать программирование проще, быстрее и удобнее. Подавляющему большинству программистов больше не нужно кодировать на языке ассемблера, поскольку их простые в использовании языки программирования высокого уровня можно транслировать в сборку с помощью компилятора.

Надеюсь, теперь вы лучше понимаете основы компьютеров и то, как они выполняют код.

Как работает компьютер и что внутри?

Это простой вопрос, но каждый время от времени задумывается над ним: как на самом деле работает тот компьютер, который находится перед вами?

Читать далее

доляТвитнутьЭлектронное письмо
Похожие темы
  • Объяснение технологии
  • Программирование
  • Компьютерный процессор
  • Обработка
Об авторе
Джейрик Манинг (Опубликовано 5 статей)

Желая узнать, как все работает, Джейрик Манинг начал возиться со всеми видами электронных и аналоговых устройств еще в раннем подростковом возрасте. Он занялся криминалистикой в ​​Университете Багио, где познакомился с компьютерной криминалистикой и кибербезопасностью. В настоящее время он много занимается самообучением и возится с технологиями, выясняя, как они работают и как мы можем использовать их, чтобы сделать жизнь проще (или, по крайней мере, круче!).

Ещё от Jayric Maning

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться