2012-06-14 3 views
3

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

PHP текст -> Сканирование/разбор -> результат = лексемы -> составитель> результата = опкод

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

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

ответ

3

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

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

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

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

2) Мышление в контексте Wamp-сервера, за что отвечает PHP-модуль?

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

Lexer => Tokenizer => Compiler 

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

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

+2

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

2
  • Machine код - код, который готов к выполнению машинного процессора
  • опкода - код, который будет выполнен переводчиком

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

Смежные вопросы