машинный код



Автор LeX задал вопрос в разделе Другие языки и технологии

Машинный код. и получил лучший ответ

Ответ от ?[гуру]
Процессор может механически исполнить инструкции в двоичном коде. Система кодов у разных производителей и в рамках различных поколений процессоров отличается. Это означает, что программа для одного компьютера в общем случае может и не запуститься на другом из-за наличия несуществующих или отсутствия необходимых команд. Двоичные коды Вы можете записать их компактно в шестнадцатеричной системе счисления например в виде CA 01 B3, такое представление двоичного кода сокращает запись, но не предоставляет программисту наглядности и читаемости, которую можно получить заменив код операции (машинный опкод) на слова-мнемоники. Так появляется ассемблер с инструкциями вроде MOV AX, BX, где широко используются символьные сокращения. Код ассемблера практически 1 в 1 соответствует машинному. Ясно, что если программа или какая-то функция написана один раз, желательно ее использовать повторно. Тут возникает идея языка высокого уровня, в котором 1 команда разворачивалась бы в десятки-сотни строк выверенного машинного кода. Исходный текст обрабатывается в общем случае несколькими программами - препроцессором, компилятором (в котором есть лексический и синтаксический анализаторы и др. подпрограммы) , затем код ассемблируется. Но машинный код еще не готов - надо связать модули (хранилища/заготовки проверенного кода) , организовать адресное пространство, подготовить заголовки загрузчика и т. п. Этим занимается линкер, который превращает объектные файлы и подключаемые библиотеки в окончательные машинные исполняемые коды (они бывают разных форматов pe/elf и др. зависит от операционной системы) . Кроссплатформенные языки вроде Java, PHP, Python и др. основаны на идее предварительной компиляции программы в опкоды виртуальной машины, разные версии исполняемого кода которой доступны на разных платформах (имеется ввиду семейство процессоров и операционная система: Intel/Win32, Arm/Android, AMD/Linux и т. п.)

Ответ от Евгений Сотников[активный]
Верно, это так

Ответ от Gri Sant[новичек]
не совсем, когда программу пишут машинным кодом, то используют 16-ю сс, то есть там присутствуют тоже буквы

Ответ от Gri Sant[новичек]
в вопросе был указан машинный код как низкоуровневый язык программирования, а единички и нули больше относятся к аппаратной части эвм

Ответ от Леонид Олейник[гуру]
Ответ очень простой - Вы всё перепутали и конечно Ваши понятия об этом не лезут ни в какие ворота. Есть языки программирования низкого уровня и и высокого уровня которые Вы ( я и другие ) знают и понимают, но эти языки не понимают компьютеры. Они понимают только команды ( коды команд - Машинный язык ). Каждая выполняемая команда состоит из кода команды и одного или 2-х адресов ( всё это нули и единицы) . Трансляторы переводят с языков программирования на промежуточный язык ( но это ещё не Машинный язык. Он будет таким только после загрузки программы. и вот этот код понимает и может выполнить компьютер.

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

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Машинный код.
Машинный код на Википедии
Посмотрите статью на википедии про Машинный код
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*