Основная разница: код операции - это тип инструкции машинного языка. Он предоставляет компьютеру инструкции, указывающие, что делать с предоставленными данными. Байт-код по своей природе похож на код операции, поскольку он также сообщает машине, что делать. Тем не менее, байт-код не предназначен для непосредственного выполнения процессором, а скорее программным интерпретатором, таким как Java или CLR.
В зависимости от используемой архитектуры операндами могут быть значения регистров, значения в стеке, другие значения памяти, порты ввода / вывода и т. Д., Заданные и доступные с использованием более или менее сложных режимов адресации. Операции могут быть арифметическими, такими как сложение или вычитание, копирование данных, логические операции и управление программой, а также специальные инструкции, такие как CPUID или другие.
Байт-код по своей природе похож на код операции, поскольку он также сообщает машине, что делать. Однако байт-код предназначен не для непосредственного выполнения процессором, а для другой программы. Он чаще всего используется программным интерпретатором, таким как Java или CLR. Они преобразуют каждую обобщенную машинную инструкцию в конкретную машинную инструкцию или инструкции, чтобы процессор компьютера мог ее понять. Фактически, байт-код имени происходит из наборов команд, которые имеют однобайтовые коды операций, за которыми следуют необязательные параметры.
Байт-коды обычно представляют собой компактные числовые коды, константы и ссылки. На самом деле это обычно числовые адреса. Они кодируют результат синтаксического анализа и семантического анализа таких вещей, как тип, область действия и глубина вложенности программных объектов. Следовательно, они часто обеспечивают гораздо лучшую производительность, чем прямая интерпретация исходного кода. Они также позволяют запускать один и тот же код на разных платформах. Это, в свою очередь, уменьшает зависимость от оборудования и операционной системы.
Путаница между кодом операции и байт-кодом возникает из-за того факта, что коды операции также могут быть найдены в байтовых кодах и других представлениях. Эти представления часто предназначены для интерпретатора программного обеспечения, а не аппаратного устройства. Они также используют типы данных и операции немного более высокого уровня, чем большинство аппаратных аналогов. Тем не менее, они построены аналогичным образом.
Сравнение между Opcode и Bytecode:
Опкод | Bytecode | |
Тип | Инструкция на машинном языке | Инструкция на машинном языке |
Описание | Тип кода, который предоставляет компьютеру инструкции, указывающие, что делать с предоставленными данными. | Форма набора команд, разработанная для эффективного выполнения программным интерпретатором. |
Что оно делает | Инструкция по работе с данными | Инструкция, указывающая, что делать |
Вбежать | Бег на машине | Запустить на виртуальной машине |
Использован | аппаратные средства | Программный интерпретатор, такой как Java или CLR. |
Изображение предоставлено: en.wikibooks.org, slideshare.net