В чем разница между машинным кодом и кодом операции?

Вопрос в основном связан с PHP, потому что код операции IMHO в основном упоминается в контексте PHP. Согласно этому описанию, вот процесс преобразования кода php в код операции:

php text -> сканирование/анализ -> результат = токены -> компиляция> результат = код операции

Несколько вопросов здесь:

1) Является ли код операции частью машинного кода, состоит ли машинный код из кодов операций? 2) Думая в контексте сервера Wamp, за что отвечает PHP-модуль? Является ли этот модуль просто интерпретатором PHP, который преобразует код PHP в токены, или это также компилятор, который компилирует токены в код операции, который выполняется на оборудовании (процессоре)?


person Centurion    schedule 14.06.2012    source источник


Ответы (2)


Вопрос в основном связан с PHP, потому что код операции IMHO в основном упоминается в контексте PHP.

На самом деле Java более популярен из-за своего байтового кода/кода операции.

1) Является ли код операции частью машинного кода, состоит ли машинный код из кодов операций?

Да, но эти коды операций зависят от машины. Интересная вещь в байт-коде Java или PHP заключается в том, что он не зависит от машины и работает на виртуальной машине для конкретной платформы.

2) Думая в контексте сервера Wamp, за что отвечает PHP-модуль?

Нет модуля, это часть ядра.

Lexer => Tokenizer => Compiler

Является ли этот модуль просто интерпретатором PHP, который преобразует код PHP в токены, или это также компилятор, который компилирует токены в код операции, который выполняется на оборудовании (процессоре)?

Не совсем. Полученный байт-код не зависит от машины (называется «Zend-opcode») и не может работать непосредственно на оборудовании. Последним шагом является преобразование этого байт-кода в машинно-зависимые коды операций.

person KingCrunch    schedule 14.06.2012
comment
Я бы не сказал, что байт-код преобразуется в машинно-зависимые коды операций. Скорее это интерпретируется виртуальной машиной, которая работает поверх самой машины. - person Ben; 14.06.2012

  • Машинный код - код, готовый к исполнению машинным процессором.
  • opcode - код, который должен быть выполнен интерпретатором

Опкод выполняется ядром php, это внутренняя функция. Для ускорения php-скриптов есть модуль PHP Accelerator, который кэширует скомпилированный байт-код, чтобы в следующий раз он будет выполняться процессором напрямую

person Vitaly Dyatlov    schedule 14.06.2012
comment
В машинном коде код операции — это часть всей инструкции, которая говорит, что это за инструкция (ADD или загрузка), отдельная от части, которая указывает операнды. например Коды операций x86: sparksandflames.com/files/x86InstructionChart.html. байт-код также имеет коды операций, но неверно утверждать, что код операции всегда означает байт-код. - person Peter Cordes; 16.11.2018