2008-11-05 2 views
40

Есть ли язык программирования «ниже»?Есть ли язык программирования «ниже»?

+2

http: //en.wikipedia.org/wiki/Computer_programming_in_the_punch_card_era – George 2009-03-25 13:31:20

+0

http://youtu.be/j9I2KfGKv4M - хорошая лекция о различии между архитектурой набора инструкций и микро архитектуры – ams 2014-02-17 16:52:26

ответ

38

Machine code. Время это были программисты, закодированные в двоичном формате 1 и 0. Хек считался авансом по этому поводу. Это было до сборки, которая использует имена кода и разделяет части инструкции на ее части.

+5

Машинный код - это прямой перевод Ассамблеи, поэтому я бы не сказал, что это ниже. – Marius 2009-10-18 12:44:02

+5

@marius, Мой компьютер может запускать машинный код, но не сборку. Так что это не равно;). – Dykam 2009-10-19 14:23:27

+5

Я не знаю, какие современные программы для ассемблера могут делать в наши дни, но в Olden Days макросборщик может сделать для вас честный бит автоматического материала (записи функций, отслеживание количества аргументов, автоматическое распределение, условное макрорасширение и другое Neat Stuff, которое необходимо выполнить вручную). Поэтому я бы сказал, что машинный код «ниже», чем сборка по причине. – Vatine 2009-10-19 14:29:51

2

Ну, вы всегда можете написать код в двоичном (или шестнадцатеричном или каком-либо другом представлении). Затем вам нужно будет рассчитать смещения прыжка и т. Д. В голове. Не рекомендуется. ;)

+0

Я сделал это с 6502. Но я не думаю, что ввод шестнадцатеричного кода можно считать языком ... Я говорю гексагон! :-) – 2018-01-18 17:45:54

2

Сорт. Машины не читают сборку, они читают «машинный язык», который преобразуется в сборку. Язык машины имеет «opcodes» вместо мнемоники сборки, и эти коды операций обычно представляют собой двоичные данные. Машинный код обычно не считается удобочитаемым человеком.

В системах RISC машинный код часто представляет собой простой перевод сборки, но в системах x86, в частности, они совершенно разные.

+1

На самом деле, на x86 это также простой перевод. Есть ли у вас примеры, которые показывают иначе? – 2008-11-05 20:51:36

70

На самом деле существует уровень кода, который находится ниже машинного кода, который называется Microcode.

2

Уверенный: «машинный код», о котором, Wikipedia, в статье «Язык сборки» (http://en.wikipedia.org/wiki/Assembly_language), говорится: «реализует символическое представление числовых машинных кодов и других констант, необходимых для программирования конкретной архитектуры процессора».

8

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

3

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

18

Сборка представляет собой текстовое представление машинного кода. Он имеет один оператор, который представляет собой одну инструкцию внутри самого ЦП. Например, «MOV X, Y» представляет собой единую инструкцию, которая проходит через CPU и перемещает значение X в положение Y. Чтобы перейти к машинным кодам, CPU будет иметь число, которое представляет «MOV», а число, которое представляет «X» (если это еще не номер) и число, представляющее Y. Эти исходные двоичные значения HEX - это машинный код. Это числа, которые заставляют ЦП направлять напряжения/токи через транзисторы, чтобы заставить его делать то, что он делает.

Машинный код нижнего уровня, но он очень близок к сборке. Это так близко, что никто не беспокоится об использовании этого из-за преимуществ чтения инструкции «MOV» = move. Имена переменных также становятся читаемыми, а не сырыми адресами в стеке или куче.

2

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

(не то, что я эксперт - Я использую C++)

12

И пойти еще ниже, (не то, что слово «язык» подходит для «машины» языка или даже ниже физических слоев), но ниже машинный язык - это конфигурация многих ворот и коммутаторов, используемых для фактического реализации каждого двоичного кода операции для конкретного оборудования (ЦП) ... Отличная книга для чтения, которая охватывает этот еще более низкий уровень, - Чарльз Петцольд, «CODE»

3

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

3

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

3

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

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

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

3

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

Однако в некоторых недавних проектах, таких как Intel Pentium 4 и выше, машинный код является выражением операций нижестоящего RISC-исполнения, известных как uops или microoperations. Таким образом, логика декодирования этих проектов заключается в том, чтобы перевести инструкции типа CISC в маленькие юпики, которые обычно ориентированы на более простой блок загрузки/хранения, похожий на RISC. В этом аспекте мы можем сказать (хотя это не может быть технически точным), что машинный код описывает сложные команды верхнего уровня архитектуры, а не «реальные» операции, которые переносятся атомарно базовой логикой выполнения CPU ,

Итак, у нас есть набор архитектурных инструкций или код архитектурной машины и набор «микро-инструкций» на внутреннем уровне, который скрыт от внешнего мира. Кэш следов процессоров Intel был задуман для хранения таких операционных систем для оптимизации суперскалярной производительности процессора (так как CPU выполняет uops, а не набор архитектурных команд, доступный для исполнения программами).

6

Я думаю, что самое низкое, что вы можете получить, называется физикой или TRW (The Real World). Это то, что разработчики и производители чипов используют для создания процессоров и других процессоров, которые могут выводить на компьютерные языки и превращать их во что-то ценное.

1

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