3

这个问题主要与 PHP 有关,因为恕我直言操作码大多是在 PHP 上下文中提到的。根据这个描述,下面是一个php代码到opcode的转换过程:

php 文本 -> 扫描/解析 -> 结果 = 令牌 -> 编译 > 结果 = 操作码

这里有几个问题:

1)操作码只是机器码的一部分,机器码是否由操作码组成?2)在Wamp服务器的上下文中思考,PHP模块负责什么?该模块只是将 PHP 代码转换为令牌的 PHP 解释器,还是将令牌编译为在硬件(处理器)上执行的操作码的编译器?

4

2 回答 2

3

这个问题主要与 PHP 有关,因为恕我直言操作码大多是在 PHP 上下文中提到的。

事实上,Java 因其字节/操作码而更受欢迎

1)操作码只是机器码的一部分,机器码是否由操作码组成?

是的,但是这个操作码是机器相关的。Java 或 PHP 字节码的有趣之处在于它独立于机器并在特定于平台的虚拟机中运行。

2)在Wamp服务器的上下文中思考,PHP模块负责什么?

没有模块,它是核心的一部分。

Lexer => Tokenizer => Compiler

该模块只是将 PHP 代码转换为令牌的 PHP 解释器,还是将令牌编译为在硬件(处理器)上执行的操作码的编译器?

不完全是。生成的字节码与机器无关(称为“Zend-opcode”),不能直接在硬件上运行。最后一步是将这个字节码转换成机器相关的操作码。

于 2012-06-14T07:45:55.550 回答
1
  • 机器代码 - 准备好由机器处理器执行的代码
  • opcode - 由解释器执行的代码

Opcode 由 php 核心执行,它是内部功能。为了加速 php 脚本,有一个模块PHP Accelerator,它缓存已编译的字节码,以便下次它可以由处理器直接执行

于 2012-06-14T07:47:47.870 回答