Машинный язык является продолжением битов , которое интерпретируется процессором на в компьютере под управлением компьютерной программы . Это родной язык из процессора , который должен сказать , что только один он может обрабатывать. Он состоит из инструкций и данных, которые должны обрабатываться в двоичном коде.
У каждого процессора есть собственный машинный язык, включая машинный код, который может выполняться только на той машине, для которой он был подготовлен. Если процессор способен выполнять все команды от процессора B , мы говорим , что совместим с B . Обратное не всегда верно: A может иметь дополнительные инструкции, которые B не знает.
Машинный код теперь генерируется автоматически, обычно компилятором языка программирования или через байт-код .
«Слова» машинного языка называются инструкциями. Каждый из них запускает команду от процессора (например: поиск значения в памяти для загрузки регистра , добавления двух регистров и т.д.).
Процессор с архитектурой RISC распознает только несколько различных инструкций, в то время как процессор с архитектурой CISC имеет широкий диапазон. Однако некоторые новейшие процессоры CISC внутренне преобразуют сложные инструкции в серию простых инструкций, которые затем выполняются.
Программа — это просто длинная последовательность инструкций, выполняемых процессором. Они выполняются последовательно , за исключением , когда скачок инструкции передает выполнение поручения, за исключением следующего. Существуют также условные переходы, которые либо выполняются (выполнение продолжается по другому адресу), либо игнорируются (выполнение продолжается со следующей инструкции) при определенных условиях.
Код операции
Каждый оператор начинается с номера, называемого кодом операции (или кодом операции ), который определяет характер инструкции. Например, для компьютеров с архитектурой x86 код операции 0x6A(в двоичном формате 01101010) соответствует инструкции push (добавить значение в верхнюю часть стека ). Следовательно, инструкция 0x6A 0x14( 01101010 00010100) соответствует push 0x14 (добавить шестнадцатеричное значение 0x14или 20 в десятичном формате в верхнюю часть стека).
Длина инструкции
Некоторые процессоры кодируют все свои инструкции с одинаковым количеством бит (например: ARM , MIPS , PowerPC ), в то время как для других длина инструкции зависит от кода операции (например: x86 ). Организация битовых комбинаций во многом зависит от процессора. Самым распространенным является разделение на поля . Одно или несколько полей определяют точную операцию (например, сложение ). Другие поля указывают тип операндов, их расположение или буквальное значение (операнды, содержащиеся в инструкции, называются немедленными ).
Преимущества и недостатки
Когда все инструкции одинакового размера, они также выравниваются в памяти. Например, если все инструкции выровнены по 32 битам (4 байта), то два младших бита адреса памяти любой инструкции равны нулю. Это позволяет, в частности, упростить реализацию кэша предсказаний бимодальных ветвлений .
С другой стороны, машинный код занимает меньше места в памяти, если он не имеет минимального размера, поскольку неиспользуемые поля удаляются.