机器码和操作码有什么区别


What is the difference between machine code and opcode?

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

PHP 文本 -> 扫描/解析 -> 结果 =

标记 -> 编译>结果 = 操作码

这里有几个问题:

1)操作码只是机器码

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

这个问题主要与PHP

有关,因为恕我直言,操作码主要在PHP上下文中提及。

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

1)操作码只是机器码

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

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

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

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

Lexer => Tokenizer => Compiler

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

不完全是。生成的字节码与机器无关(名为"Zend-opcode"),不能直接在硬件上运行。最后一步是将此字节码转换为依赖于机器的操作码。

  • 机器代码 - 准备由机器处理器执行的代码
  • 操作码 - 由解释器执行的代码

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