В чем разница между машинным кодом и кодом операции?
Вопрос в основном связан с PHP, потому что код операции IMHO в основном упоминается в контексте PHP. Согласно этому описанию , вот процесс преобразования кода php в код операции:
Текст Php -> сканирование/синтаксический анализ - > результат = токены - > компиляция > результат = код операции
Здесь несколько вопросов:
1) Является ли код операции просто частью машинного кода, состоит ли машинный код из кодов операций? 2) Мышление в контексте сервера Wamp, что такое модуль PHP ответственный за? Является ли этот модуль просто интерпретатором PHP, который преобразует PHP-код в токены, или это также компилятор, который компилирует токены в код операции, выполняемый на оборудовании (процессоре)?
2 answers
Вопрос в основном связан с PHP, потому что код операции IMHO в основном упоминается в контексте PHP.
На самом деле Java более популярна благодаря своему байт-/коду операции
1) Является ли код операции просто частью машинного кода, состоит ли машинный код из кодов операций?
Да, но эти коды операций зависят от машины. Байт-код javas или phps интересен тем, что он не зависит от компьютера и работает на виртуальной машине, зависящей от платформы.
2) Размышляя в контексте сервера Wamp, за что отвечает PHP-модуль?
Нет модуля, это часть ядра.
Lexer => Tokenizer => Compiler
Является ли этот модуль просто интерпретатором PHP, который преобразует PHP-код в токены, или это также компилятор, который компилирует токены в код операции, выполняемый на оборудовании (процессоре)?
Не совсем так. Полученный байт-код не зависит от компьютера (называется "Zend-код операции") и не может выполняться непосредственно на оборудовании. Последний шаг - это трансформация этот байт-код преобразуется в машинно-зависимые коды операций.
- Машинный код - код, который готов к выполнению машинным процессором
- код операции - код, который должен быть выполнен интерпретатором
Код операции выполняется ядром php, это внутренняя функция. Для ускорения php-скриптов существует модуль PHP Accelerator, который кэширует скомпилированный байт-код, чтобы в следующий раз он был выполнен процессором напрямую