Машинный код

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

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

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

Запись машинного кода

Машинный код может быть записан в различных формах:

  • Использование ряда переключателей. Это генерирует последовательность из 1 и 0. Это использовалось в первые дни вычислительной техники. С 1970-х годов он больше не используется.
  • Использование Hex-редактора. Это позволяет использовать опкоды вместо номера команды.
  • Использование ассемблера. Языки ассемблера проще, чем операционные коды. Их синтаксис легче понять, чем машинный язык, но сложнее, чем языки высокого уровня. Ассемблер самостоятельно переводит исходный код в машинный код.
  • Использование языка программирования высокого уровня позволяет создавать программы, использующие код, который легче читать и писать. Эти программы переводятся в машинный код. Перевод может происходить в несколько этапов. Программы Java сначала оптимизируются в байткод. Затем они переводятся в машинный язык при использовании.
Передняя панель раннего миникомпьютера с переключателями для ввода машинного кодаZoom
Передняя панель раннего миникомпьютера с переключателями для ввода машинного кода

Типичные инструкции машинного кода

Существует множество видов инструкций, обычно входящих в набор инструкций:

  • Арифметические действия: Сложение, вычитание, умножение, деление.
  • Логические операции: Конъюнкция, дизъюнкция, отрицание.
  • Операции, действующие на отдельные биты: Сдвиг битов влево или вправо.
  • Операции, действующие на память: копирование значения из одного регистра в другой.
  • Операции, сравнивающие два значения: больше, чем, меньше, чем, равно.
  • Операции, объединяющие другие операции: сложение, сравнение и копирование, если значение равно некоторому значению (как одна операция), переход к некоторой точке программы, если регистр равен нулю.
  • Операции, действующие на поток программы: переход по некоторому адресу.
  • Операции, преобразующие типы данных: например, преобразование 32-битного целого числа в 64-битное целое число, преобразование значения с плавающей точкой в целое число (путем усечения).

Многие современные процессоры используют микрокод для некоторых команд. Более сложные команды, как правило, используют его. Это часто делается в CISC-архитектурах.

Инструкции

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

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

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

Большинство инструкций имеют одно или несколько полей опкода. Они определяют основной тип инструкции. Другие поля могут указывать тип операндов, режим адресации и так далее. Также могут быть специальные инструкции, которые содержатся в самом опкоде. Такие инструкции называются непосредственными.

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

Пример

Архитектура MIPS имеет инструкции длиной 32 бита. В этом разделе приведены примеры кода. Общий тип инструкции находится в поле op (операция). Это старшие 6 бит. Инструкции J-типа (jump) и I-типа (immediate) полностью задаются op. Инструкции типа R (регистр) включают поле funct. Оно определяет точную операцию кода. В этих типах используются следующие поля:

      6 5 5 5 5 5 6 бит [ op | rs | rt | rd |shamt| funct] R-тип [ op | rs | rt | address/immediate] I-тип [ op | target address ] J-тип

rs, rt и rd указывают операнды регистра. shamt задает величину сдвига. Поля адреса или непосредственного адреса содержат непосредственно операнд.

Пример: сложите регистры 1 и 2. Результат поместите в регистр 6. Он закодирован:

[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 32 десятичная 000000 00001 00010 00110 00000 100000 двоичная

Загрузите значение в регистр 8. Возьмите его из ячейки памяти, расположенной через 68 ячеек после места, указанного в регистре 3:

[ op | rs | rt | address/immediate] 35 3 8 68 десятичная 100011 00011 01000 00000 00000 00001 000100 двоичная

Перейти к адресу 1024:

[ op | адрес цели ] 2 1024 десятичный 000010 00000 00000 00000 00000 10000 000000 двоичный

Похожие страницы

  • Двоичная система счисления
  • Квантовые компьютеры
  • Набор инструкций
  • Компьютер с сокращенным набором команд

Вопросы и ответы

В: Что такое машинный код?


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

В: Что является самым низким уровнем программного обеспечения?


О: Машинный код - это самый низкий уровень программного обеспечения.

В: Как другие языки программирования выполняются компьютерами?


О: Другие языки программирования переводятся в машинный код, который компьютер может выполнять.

В: Из чего состоит инструкция в машинном коде?


О: Инструкция в машинном коде состоит из опкода (кода операции) и операнда(ов). Операндами обычно являются адреса памяти или данные.

В: Что такое набор инструкций?


О: Набор инструкций - это список операционных кодов, доступных для компьютера.

В: Что делают сборщики программ с кодом?


О: Разработчики программ превращают код в другой язык или машинный код.

В: Как по-другому называется машинный код?


О: Машинный код иногда называют "родным" кодом, когда говорят о вещах, которые работают только на некоторых компьютерах.

AlegsaOnline.com - 2020 / 2023 - License CC3