2012-06-14 27 views
3

这个问题主要与PHP有关,因为恕我直言操作码主要在PHP上下文中提到。根据这一description,这里有PHP代码的转换过程分为操作码:机器码和操作码有什么区别?

PHP文本 - >扫描/解析 - >结果=令牌 - >编译>的结果=操作码在这里

几个问题:

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

回答

3

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

其实Java是更受欢迎的是针对字节/码

1)是操作码的机器代码只是一个部分,它的机器代码由操作码的?

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

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

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

Lexer => Tokenizer => Compiler 

是模块是刚刚PHP解释谁变换PHP代码到令牌或者是它也是一个编译器编译谁进入令牌码是在硬件(处理器)执行?

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

+2

我不会说字节码被转换为与机器相关的操作码。而是由运行在机器本身之上的虚拟机来解释。 – Ben

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

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