PHP zend字节码参考?

dae*_*hee 6 php zend-framework bytecode

是否有任何文档描述了php zend vm的字节码指令结构?

php网站上有操作码编号和名称, 但我想知道更详细的结构,如操作数大小或语法.

是否有任何文件的zend vm字节码,如flash字节码文件,或英特尔指令参考手册或java字节码手册?

先感谢您

lui*_*gif 1

详细信息可以直接在Zend VM的源代码中找到:

https://github.com/php/php-src/blob/master/Zend/zend_vm_gen.php

对于每个 Zend VM 操作,都有一个要运行的本机 C 函数,并为其指定 0、1 或 2 个操作数。完成操作后,它会给出结果以及任何附加信息。此外,该操作还保存有关传入的任何操作数的类型、结果类型和操作码的信息。

(来源: https: //x-team.com/blog/learn-about-php-opcodes

然而,理解任何特定的用例可能非常困难。一个可能的解决方案是安装 Vulcan Logic Disassembler (vld) 扩展。vld 挂接到 Zend 引擎并转储脚本的所有操作码。

(来源:https ://ctors.net/2015/09/11/php_opcodes )

通过此扩展,可以转储操作码和 PHP 脚本的内部表示。2016 年发布的0.14.0 版本虽然仍处于测试阶段,但也支持 PHP 7.0 和 7.1。

最新的开发源码和安装说明可以在作者的Github仓库中找到:

https://github.com/derickr/vld