что такое машинный язык
Машинный язык
Машинный код (также употребляются термины собственный код, или платформенно-ориентированный код, или родной код, или нативный код — от англ. native code ) — система команд (язык) конкретной вычислительной машины (машинный язык), который интерпретируется непосредственно микропроцессором или микропрограммами данной вычислительной машины.
Каждая модель процессора имеет свой собственный машинный язык, хотя во многих моделях эти наборы команд сильно перекрываются. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B. Если процессор A знает несколько команд, которых не понимает процессор B, то B несовместим с A.
«Слова» машинного языка называются машинными инструкциями. Каждая из них описывает элементарное действие, выполняемое процессором, такое как «переслать байт из памяти в регистр». Программа — это просто длинный список инструкций, выполняемых процессором. Раньше процессоры просто выполняли инструкции одну за другой, но новые суперскалярные процессоры способны выполнять несколько инструкций за раз. Прямой поток выполнения команд может быть изменён инструкцией перехода, которая переносит выполнение на инструкцию с заданным адресом. Инструкция перехода может быть условной, выполняющей переход только при соблюдении некоторого условия.
Также инструкции бывают постоянной длины (у MISC-архитектур) и диапазонной (у x86 команда имеет длину от 8 до 120 битов).
См также
Полезное
Смотреть что такое «Машинный язык» в других словарях:
Машинный язык — язык программирования, элементами которого являются команды компьютера, характеризующиеся: количеством операндов в команде; назначением информации, задаваемой в операндах; набором операций, которые может выполнить компьютер и др. Конструкции… … Финансовый словарь
МАШИННЫЙ ЯЗЫК — МАШИННЫЙ ЯЗЫК, язык программирования для представления программ в форме, допускающей их непосредственную реализацию аппаратными средствами конкретной ЭВМ. Программа на машинном языке представляет собой последовательность машинных команд, поэтому… … Современная энциклопедия
МАШИННЫЙ ЯЗЫК — язык программирования, предназначенный для представления программ в форме, которая позволяет выполнять их на конкретной ЭВМ. Предположениями машинного языка являются команды, напр. команды процессора. Иногда машинным языком также называют систему … Большой Энциклопедический словарь
машинный язык — Язык программирования, предназначенный для представления программы в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации. Примечание Для выполнения программы на машинном языке не требуется применение… … Справочник технического переводчика
Машинный язык — МАШИННЫЙ ЯЗЫК, язык программирования для представления программ в форме, допускающей их непосредственную реализацию аппаратными средствами конкретной ЭВМ. Программа на машинном языке представляет собой последовательность машинных команд, поэтому… … Иллюстрированный энциклопедический словарь
МАШИННЫЙ ЯЗЫК — формализованный язык программирования, содержание и правила которого реализуются аппаратными средствами конкретной ЭВМ. М. я. состоит из системы команд и метода кодирования информации (исходных данных, результатов вычисления); символы М. я.… … Большая политехническая энциклопедия
машинный язык — язык программирования, предназначенный для представления программ в форме, которая позволяет выполнять их на конкретной ЭВМ. Предложениями машинного языка являются команды, например, команды процессора. Иногда машинным языком также называют… … Энциклопедический словарь
машинный язык — kompiuterinė kalba statusas T sritis automatika atitikmenys: angl. absolute language; actual language; computer language; machine language vok. Maschinensprache, f; Rechnersprache, f rus. машинный язык, m; язык машинных кодов, m pranc. langage… … Automatikos terminų žodynas
Машинный язык — 27. Машинный язык Machine language Язык программирования, предназначенный для представления программ в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации. Примечание. Для выполнения программы на машинном… … Словарь-справочник терминов нормативно-технической документации
Машинный язык — Язык программирования, содержание и правила которого реализованы аппаратными средствами ЦВМ. М. я. состоит из системы команд ЦВМ и метода кодирования информации (исходных данных, результатов вычислений), принятого в ЦВМ. Символами М. я.… … Большая советская энциклопедия
Машинный язык
Смотреть что такое «Машинный язык» в других словарях:
Машинный язык — язык программирования, элементами которого являются команды компьютера, характеризующиеся: количеством операндов в команде; назначением информации, задаваемой в операндах; набором операций, которые может выполнить компьютер и др. Конструкции… … Финансовый словарь
МАШИННЫЙ ЯЗЫК — МАШИННЫЙ ЯЗЫК, язык программирования для представления программ в форме, допускающей их непосредственную реализацию аппаратными средствами конкретной ЭВМ. Программа на машинном языке представляет собой последовательность машинных команд, поэтому… … Современная энциклопедия
МАШИННЫЙ ЯЗЫК — язык программирования, предназначенный для представления программ в форме, которая позволяет выполнять их на конкретной ЭВМ. Предположениями машинного языка являются команды, напр. команды процессора. Иногда машинным языком также называют систему … Большой Энциклопедический словарь
машинный язык — Язык программирования, предназначенный для представления программы в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации. Примечание Для выполнения программы на машинном языке не требуется применение… … Справочник технического переводчика
Машинный язык — МАШИННЫЙ ЯЗЫК, язык программирования для представления программ в форме, допускающей их непосредственную реализацию аппаратными средствами конкретной ЭВМ. Программа на машинном языке представляет собой последовательность машинных команд, поэтому… … Иллюстрированный энциклопедический словарь
МАШИННЫЙ ЯЗЫК — формализованный язык программирования, содержание и правила которого реализуются аппаратными средствами конкретной ЭВМ. М. я. состоит из системы команд и метода кодирования информации (исходных данных, результатов вычисления); символы М. я.… … Большая политехническая энциклопедия
Машинный язык — Эта статья о системе команд в целом; об инструкциях см.: Код операции (информатика). Машинный код (также употребляются термины собственный код, или платформенно ориентированный код, или родной код, или нативный код от англ. native code) система… … Википедия
машинный язык — язык программирования, предназначенный для представления программ в форме, которая позволяет выполнять их на конкретной ЭВМ. Предложениями машинного языка являются команды, например, команды процессора. Иногда машинным языком также называют… … Энциклопедический словарь
машинный язык — kompiuterinė kalba statusas T sritis automatika atitikmenys: angl. absolute language; actual language; computer language; machine language vok. Maschinensprache, f; Rechnersprache, f rus. машинный язык, m; язык машинных кодов, m pranc. langage… … Automatikos terminų žodynas
Машинный язык — 27. Машинный язык Machine language Язык программирования, предназначенный для представления программ в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации. Примечание. Для выполнения программы на машинном… … Словарь-справочник терминов нормативно-технической документации
Машинный код
Из Википедии — свободной энциклопедии
Маши́нный код (платфо́рменно-ориенти́рованный код), маши́нный язы́к — система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой вычислительной машины. [1]
Компьютерная программа, записанная на машинном языке, состоит из машинных инструкций, каждая из которых представлена в машинном коде в виде т. н. опкода — двоичного кода отдельной операции из системы команд машины. Для удобства программирования вместо числовых опкодов, которые только и понимает процессор, обычно используют их условные буквенные мнемоники. Набор таких мнемоник, вместе с некоторыми дополнительными возможностями (например, некоторыми макрокомандами, директивами), называется языком ассемблера.
Каждая модель процессора имеет собственный набор команд, хотя во многих моделях эти наборы команд сильно перекрываются. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B. Если процессоры A и B имеют некоторое подмножество инструкций, по которым они взаимно совместимы, то говорят, что они одной «архитектуры» (имеют одинаковую архитектуру набора команд).
Машинный язык
Иногда выражения, такие как «машинный код, машинный язык, двоичный код, машинный код, программный код», используются как взаимозаменяемые. Однако они могут иметь два разных значения:
Оглавление
Машинная программа
Отличия от языка ассемблера
Большинство вышеупомянутых аспектов языка ассемблера также применимы аналогичным образом к языкам программирования более высокого уровня, хотя они отличаются от языка ассемблера дополнительными (производительными) функциями.
Создание программы
пример
Язык программирования C
В следующем исходном коде на языке программирования более высокого уровня C вычисляется сумма чисел 2 и 3 и возвращается результат:
Машинный код ( шестнадцатеричный ) | связанный код ассемблера | связанный код C | Объяснение |
---|---|---|---|
55 48 89 E5 | push rbp | > | Верните RBP к исходному значению.Машинный код на компьютерах IBM на примере OS / 390Данных создается в соответствии с заданным форматом хранения. Значение «12» может, например, B. иметь следующий вид (шестнадцатеричное представление минимальной длины): F1F2 Текст или номер без упаковки 012C упакованный позитив, хранение одного полубайта на число, в конце знаковый полубайт. 012D упакованный негатив (dto) 0C двоичный положительный, соответствует B’00001100 ‘ В случае более длинных полей данных также могут быть начальные нули или, в случае текста, последующие пробелы. Для каждого предоставленного поля данных определяется «адрес», с которого он начинается и где он хранится в соответствии с его длиной и форматом. C5.1C.92A4.8C2B (точки разделения вставлены только для лучшей читаемости): C5 = Код команды для CLC = Логический символ сравнения; Сравнение персонажей 1C = длина минус 1 сравниваемых полей (с 00 сравнивается 1 байт и т. Д., Здесь 29 байтов) 92A4 = адрес первого операнда: 9 = базовый регистр, 2A4 = расстояние до регистра 8C2B = адрес второго операнда: 8 = базовый регистр, C2B = расстояние до регистра 47 = Код команды для BC = Переход по условию: Команда перехода, если выполняется условие (из предыдущей команды) 8 = состояние; здесь: если ‘равно’, мнемонический ассемблерный код BE (ветвление при равенстве) 0 = необязательный регистр, содержимое которого добавляется к адресу перехода; не на «0» B = адрес назначения (базовый регистр) 654 = адрес назначения (расстояние); с содержимым B = 6C4410 произойдет переход к адресу 6C4A64. В коде ассемблера это кодирование могло бы, например, Б. выглядят так: CLC FELDA (29), FIELDB БЫТЬ ХХХ ЕСЛИ Field_A = Field_B, то НАЙТИ XXX. Адреса памяти всегда представлены в машинном коде одной (или двумя) регистрационной информацией и, необязательно, «расстоянием», указанным в команде. При запуске программы операционная система загружает определенный регистр с адресом, по которому программа была загружена в память. Начиная с этого значения, базовые регистры загружаются в программный код (запрограммированный с помощью ASS, сгенерированный с помощью языков высокого уровня), посредством чего команды, снабженные относительными адресами, адресуют фактические ячейки памяти. Обзор типичных функций машинного языкаНабор инструкцийСледующие мнемоники (сокращения команд) были выбраны в качестве примера и зависят от языка ассемблера. Пример: команда сложения, такая как ADC (сложение с переносом), сигнализирует следующей программной последовательности, что допустимый диапазон значений был превышен за пределы установки флагов переноса и переполнения. Различия: Набор команд отдельных процессоров отличается. Не все команды доступны для каждого типа процессора и в каждом поколении процессоров. Мощность: набор команд процессора предоставляет команды с разной функциональностью. Помимо простых, одноэтапных базовых операций, также доступны команды, объединяющие несколько операций в одной команде. Категоризация командБазовые машинные команды можно разделить на следующие категории: Машинный кодМашинный код (платформенно-ориентированный код), машинный язык — система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой вычислительной машины. [1] Каждая инструкция выполняет определённое (обычное элементарное) действие, такое как операция с данными (например, сложение или копирование; в регистре или в памяти) или переход к другому участку кода (изменение порядка исполнения; при этом переход может быть безусловным или условным, зависящим от результатов предыдущих инструкций). Каждая исполнимая программа состоит из последовательности таких атомарных инструкций. Машинный код можно рассматривать как примитивный язык программирования или как самый низкий уровень представления скомпилированных или ассемблированных компьютерных программ. Хотя вполне возможно создавать программы прямо в машинном коде, сейчас это делается редко в силу громоздкости кода и трудоёмкости управления ресурсами процессора, за исключением ситуаций, когда требуется экстремальная оптимизация. Поэтому подавляющее большинство программ пишется на языках более высокого уровня и транслируется в машинный код компиляторами. Машинный код иногда называют нативным кодом (также собственным или родным кодом — от англ. native code ), когда говорят о платформенно-зависимых частях языка или библиотек. [2] Программы на интерпретируемых языках (таких как Бейсик или Python) не транслируются в машинный код, вместо этого они либо исполняются непосредственно интерпретатором, либо транслируются в псевдокод (байт-код). Однако интерпретаторы этих языков (которые сами можно рассматривать как процессоры) как правило представлены в машинном коде. Каждая модель процессора имеет свой собственный набор команд, хотя во многих моделях эти наборы команд сильно перекрываются. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B. Если процессор A знает несколько команд, которых не понимает процессор B, то B несовместим с A. Раньше процессоры просто выполняли инструкции одну за другой, но новые суперскалярные процессоры способны выполнять несколько инструкций за раз. Также инструкции бывают постоянной длины (у RISC-, MISC-архитектур) и диапазонной (у CISC-архитектур; например, для архитектуры x86 команда имеет длину от 8 до 120 битов). СодержаниеМикрокодВ некоторых компьютерных архитектурах поддержка машинного кода реализуется ещё более низкоуровневым слоем программ, называемых микропрограммами, что позволяет обеспечить единый интерфейс машинного языка у всей линейки или семейства компьютеров, которые могут иметь значительные структурные отличие между собой. Это делается для облегчения переноса программ в машинном коде между разными моделями компьютеров. Примером этого является семейство компьютеров IBM System/360 и их преемников: несмотря на разные шины шириной от 8 до 64 бит и выше, тем не менее у них общая архитектура на уровне машинного языка. Использование слоя микрокода для реализации эмулятора позволяет компьютеру представлять архитектуру совершенно другого компьютера. В линейке System/360 это использовалось для переноса программ с более ранних машин IBM на новое семейство — например, эмулятор IBM 1401/1440/1460 на IBM S/360 model 40. Абсолютный и позиционно-независимый кодПозиционно-независимый код (англ. position-independent code ) — программа, которая может быть размещена в любой области памяти, так как все ссылки на ячейки памяти в ней относительные (например, относительно счётчика команд). Такую программу можно переместить в другую область памяти в любой момент, в отличие от перемещаемой программы, которая хотя и может быть загружена в любую область памяти, но после загрузки должна оставаться на том же месте. [1] Возможность создания позиционно-независимого кода зависит от архитектуры и системы команд целевой платформы. Например, если во всех инструкциях перехода в системе команд должны указываться абсолютные адреса, то код, требующий переходов, практически невозможно сделать позиционно-независимым. В архитектуре x86 непосредственная адресация в инструкциях работы с данными представлена только абсолютными адресами, но поскольку адреса данных считаются относительно сегментного регистра, который можно поменять в любой момент, это позволяет создавать позиционно-независимый код со своими ячейками памяти для данных. Кроме того, некоторые ограничения набора команд могут сниматься с помощью самомодифицирующегося кода или нетривиальных последовательностей инструкций. Программа «Hello, world!»Программа «Hello, world!» для процессора архитектуры x86 (ОС DOS, вывод при помощи BIOS Int 10h (англ.) выглядит следующим образом (в шестнадцатеричном представлении побайтно): BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 Данная программа работает при её размещении по смещению 10016. Отдельные инструкции выделены цветом:
|