Другие языки программирования и технологии

Машинный код.

Првильно понимаю?
Машинный язык - это всего лишь нули и единицы, его ещё называют низкоуровневым, так же к низкоуровневым относят и ассемблер, хотя в синтаксисе у него есть и буквы, отновят его так потому, что он непосредственно общается лучше с аппаратным обеспечением ПК. А про языки высокого уровня я понял всё. Просто именно интересует то, что машинный код - это ведь нули и единицы, а язык ассемблера это первый язык, использующий в синтаксисе ещё и буквы! Так? :)
ИИ
Иван Иванов
1 281
Процессор может механически исполнить инструкции в двоичном коде. Система кодов у разных производителей и в рамках различных поколений процессоров отличается. Это означает, что программа для одного компьютера в общем случае может и не запуститься на другом из-за наличия несуществующих или отсутствия необходимых команд. Двоичные коды Вы можете записать их компактно в шестнадцатеричной системе счисления например в виде CA 01 B3, такое представление двоичного кода сокращает запись, но не предоставляет программисту наглядности и читаемости, которую можно получить заменив код операции (машинный опкод) на слова-мнемоники. Так появляется ассемблер с инструкциями вроде MOV AX, BX, где широко используются символьные сокращения. Код ассемблера практически 1 в 1 соответствует машинному. Ясно, что если программа или какая-то функция написана один раз, желательно ее использовать повторно. Тут возникает идея языка высокого уровня, в котором 1 команда разворачивалась бы в десятки-сотни строк выверенного машинного кода. Исходный текст обрабатывается в общем случае несколькими программами - препроцессором, компилятором (в котором есть лексический и синтаксический анализаторы и др. подпрограммы) , затем код ассемблируется. Но машинный код еще не готов - надо связать модули (хранилища/заготовки проверенного кода) , организовать адресное пространство, подготовить заголовки загрузчика и т. п. Этим занимается линкер, который превращает объектные файлы и подключаемые библиотеки в окончательные машинные исполняемые коды (они бывают разных форматов pe/elf и др. зависит от операционной системы) . Кроссплатформенные языки вроде Java, PHP, Python и др. основаны на идее предварительной компиляции программы в опкоды виртуальной машины, разные версии исполняемого кода которой доступны на разных платформах (имеется ввиду семейство процессоров и операционная система: Intel/Win32, Arm/Android, AMD/Linux и т. п.)
Сергей Байдраков
Сергей Байдраков
8 955
Лучший ответ
0 Горобец А машинный код запускается в 3-ем кольце защиты или сразу в 0-евом?
Ответ очень простой - Вы всё перепутали и конечно Ваши понятия об этом не лезут ни в какие ворота. Есть языки программирования низкого уровня и и высокого уровня которые Вы ( я и другие ) знают и понимают, но эти языки не понимают компьютеры. Они понимают только команды ( коды команд - Машинный язык ). Каждая выполняемая команда состоит из кода команды и одного или 2-х адресов ( всё это нули и единицы) . Трансляторы переводят с языков программирования на промежуточный язык ( но это ещё не Машинный язык. Он будет таким только после загрузки программы. и вот этот код понимает и может выполнить компьютер.
Маши́нный код (платфо́рменно-ориенти́рованный код), маши́нный язы́к — система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой вычислительной машины.

Компьютерная программа, записанная на машинном языке, состоит из машинных инструкций, каждая из которых представлена в машинном коде в виде т. н. опкода — двоичного кода отдельной операции из системы команд машины. Для удобства программирования вместо числовых опкодов, которые только и понимает процессор, обычно используют их условные буквенные мнемоники. Набор таких мнемоник, вместе с некоторыми дополнительными возможностями, называется языком ассемблера.
Cергей Гладких Машинный код тяжело учить ???
Верно, это так
в вопросе был указан машинный код как низкоуровневый язык программирования, а единички и нули больше относятся к аппаратной части эвм
Илья Слета
Илья Слета
144
Иван Иванов А ты знаешь машинный код как высокоуровневый язык? Единички и нули это и есть машинный код так то!
не совсем, когда программу пишут машинным кодом, то используют 16-ю сс, то есть там присутствуют тоже буквы
Максим Бодунов Все-равно эти символы транслируются в последовательности 011101110, а затем и в уровни напряжения.