Подтвердить что ты не робот

Разница между: Код операции, байтовый код, мнемоника, машинный код и сборка

Я совершенно новичок в этом. Я попытался понять разницу между указанными терминами в ясной форме, однако, я все еще смущен. Вот что я нашел:

  • В языке ассемблера (или сборки) компьютера мнемоника является аббревиатурой для операции. Он вводится в поле кода операции каждой команды программы ассемблера. например AND AC,37, что означает AND регистр AC с 37. поэтому AND, SUB и MUL мнемонические. Они переводятся ассемблером.

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

4b9b3361

Ответ 1

OPCODE. Это число, которое интерпретируется вашей машиной (виртуальной или силиконовой), которая представляет операцию для выполнения

BYTECODE: то же, что и машинный код, за исключением того, что в основном используется программным интерпретатором (например, Java или CLR)

MNEMONIC. Английское слово MNEMONIC означает "Устройство, такое как шаблон букв, идей или ассоциаций, который помогает запомнить что-то". Таким образом, он обычно используется программистами на языке ассемблера для запоминания "ОПЕРАЦИЙ", которые может выполнять машина, например "ADD" и "MUL" и "MOV" и т.д. Это специфично для ассемблера.

MACHINE CODE. Это последовательность номеров, которая включает и выключает коммутаторы в компьютере для выполнения определенной работы - например, добавление чисел, разветвление, умножение и т.д. Это чисто специфичный для машины и хорошо документированный разработчиками процессора.

Assembly: существует две "сборки" - одна сборка - это последовательность мнемоник и операндов, которые передаются "ассемблеру", который "собирает" мнемоники и операнды в исполняемый машинный код. Необязательно "компоновщик" связывает сборки и создает исполняемый файл.

вторая "сборка" на языках "CLR" (языки .NET) представляет собой последовательность кода CLR, наполненную информацией метаданных, своего рода библиотеку исполняемого кода, но не непосредственно исполняемую.

Ответ 2

Аникет проделал хорошую работу, но я тоже пойду.

Во-первых, поймите, что на самом низком уровне компьютерные программы и все данные являются просто цифрами (иногда называемыми словами), в какой-то памяти. Чаще всего эти слова кратно 8 бит (1 и 0) (например, 32 и 64), но не обязательно, а в некоторых процессорах каждое слово значительно больше. Несмотря на это, это просто цифры, которые представлены как серия из 1 и 0, или вкл. И выкл., Если хотите. То, что означает число, зависит от того, кто/когда-либо читает их, а в случае процессора он считывает память по одному слову за раз, и на основе числа (инструкции), которое он видит, предпринимает некоторые действия. Такие действия могут, например, считывать значение из памяти, записывать значение в память, изменять значение, которое оно прочитало, переходить в другое место в памяти для чтения инструкций.

В самые ранние годы программист буквально включал и выключал, чтобы вносить изменения в память, при включенном или выключенном освещении, чтобы читать 1 и 0, так как не было клавиш, экранов и т.д. С течением времени память стала больше, процессоры стали более сложными, были разработаны устройства отображения и клавиатуры для ввода, а с другой - более простые способы программирования.

Перефразируя Аникет:

OPCODE является частью слова инструкции, которое интерпретируется процессором как представляющее операцию для выполнения, например, чтение, запись, переход, добавление. Многие инструкции также будут иметь OPERANDS, которые влияют на выполнение команды, например, говорить о том, где в памяти читать или писать или куда переходить. Так, если инструкции имеют размер 32 бита, например, процессор может использовать 8 бит для кода операции и 12 бит для каждого из двух операндов.

Шаг от переключателей переключения, код может быть введен в машину с помощью программы под названием "монитор". Программист использовал бы простые команды, чтобы сказать, какую память они хотят изменить, и введите MACHINE CODE численно, например. в базе 16 (шестнадцатеричный) с использованием от 0 до 9 и от A до F для цифр.

Хотя лучше, чем переключать переключатели, ввод машинного кода все еще медленный и подверженный ошибкам. Наряду с этим - это СБОР МОДЕЛЬ, который использует более легко запоминаемую MNEMONICS вместо фактического числа, которое представляет собой инструкцию. Задача ASSEMBLER заключается в том, чтобы преобразовать мнемоническую форму программы в соответствующий машинный код. Это упрощает программирование, особенно для инструкций перехода, где часть инструкции представляет собой адрес памяти для перехода или несколько слов для пропусков. Программирование в машинных кодах требует кропотливых вычислений для формулировки правильной инструкции, и если какой-либо код добавлен или удален, инструкции перескакивания, возможно, придется пересчитать. Ассемблер обрабатывает это для программиста.

Это оставляет BYTECODE, что в корне совпадает с машинным кодом, поскольку он описывает операции с низким уровнем, такие как чтение и запись памяти и базовые вычисления. Байт-код, как правило, предполагается, что он будет создан, когда COMPILING языка более высокого уровня, например PHP или Java, и в отличие от машинного кода для многих аппаратных процессоров, может иметь операции для поддержки определенных функций языка более высокого уровня. Ключевое различие заключается в том, что процессор байт-кода обычно является программой, хотя процессоры были созданы для интерпретации некоторых спецификаций байт-кода, например. процессор под названием SOAR (Smalltalk On A RISC) для байт-кода Smalltalk. Хотя вы обычно не называете собственный байт-код машинного кода, для некоторых типов процессоров, таких как CISC и EISC (например, Linn Rekursiv, от людей, сделавших проигрывателей), сам процессор содержит программу, которая интерпретирует машинные инструкции, поэтому есть параллели.

Ответ 3

Следующая строка представляет собой дизассемблированный код x86.

68 73 9D 00 01       PUSH 0x01009D73

68 - это код . Со следующим байтом он представляет PUSH инструкцию для x86 Assembly. Команда PUSH подталкивает данные длиной 4 байта (32 бита) в стек. Слово PUSH является всего лишь мнемонической, которая представляет код операции 68. Каждый из байтов 68, 73, 9D, 00, 01 машинный код.

машинные коды предназначены для реальных машин (ЦП), но байтовые коды представляют собой псевдо-машинные коды для виртуальных машин.

Когда вы пишете Java-код. java компилятор компилирует ваш код и генерирует байтовые коды. (Файл .class), и вы можете выполнить тот же код на любой платформе без изменения.

                     JAVA CODE
                         |
                         |
                     BYTE CODE
         ________________|_______________
         |               |               |
      x86 JVM        SPARC JVM        ARM JVM
         |               |               |
         |               |               |
        x86            SPARC            ARM
   MACHINE CODE     MACHINE CODE    MACHINE CODE

Ответ 4

"Сборка" происходит от самого раннего кода "ассемблеры", который "собирает" программы из нескольких файлов (что мы теперь будем называть "include" файлами). (Хотя обратите внимание на то, что "файлы" часто были карточными колодами.) Использование термина "язык ассемблера" для обозначения мнемонического представления кода - это обратная форма из "ассемблера" и несколько неточна, поскольку ряд "ассемблеры" не поддерживают файлы include и, следовательно, не "собираются".

Интересно отметить, что "ассемблеры" были изобретены для поддержки "подпрограмм". Первоначально были "внутренние" и "внешние" подпрограммы. "Внутренние" подпрограммы были тем, что мы теперь будем называть "inline", тогда как "внешние" были достигнуты с помощью примитивного механизма "вызова". В то время было много споров относительно того, были ли "внешние" подпрограммы хорошей идеей или нет.

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

Ответ 5

Недавно я прочитал хорошую статью об этом, Разница между Opcode и Bytecode, поэтому хотел бы поделиться с кем бы то ни было после хорошего объяснения Эта тема. Весь кредит принадлежит оригинальному автору.

Код операции и байт-код

  • Опкод

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

  • Bytecode

    Bytecode похож на opcode по своей природе, так как он также сообщает машине, что делать. Однако Bytecode не предназначен для непосредственного выполнения процессором, а другой программой.
    Он чаще всего используется программным интерпретатором, таким как Java или CLR. Они преобразуют каждую обобщенную машинную инструкцию в конкретную машинную инструкцию или инструкции, чтобы компьютерный процессор понял. На самом деле, имя Bytecode происходит от наборов инструкций, которые имеют однобайтовые коды операций, за которыми следуют необязательные параметры.

Ответ 6

  • Машинный код находится в двоичном виде, но мнемоника - в идеях, письмах (MOV, ADD и т.д.).
  • Машинный код - это язык, но мнемонический код является частью языка ассемблера