11.2.1 EG(v)
全称:executor_globals
对应的是结构体_zend_executor_globals,它是PHP生命周期中非常核心的数据结构。
这个结构体维护了符号表(symbol_table,function_table,class_table等)、执行栈(zend_vm_stack)以及包含执行指令的zend_execute_data,另外还有include的文件列表、autoload函数、异常处理handler等重要信息。
11.2.2 符号表
符号表分为:
symbol_table
symbol_table用于存放变量信息,其类型是HashTable
function_table
对应的是函数表,主要是内部函数
class_table
大量的内置类
符号表存放了执行需要的数据
11.2.3 指令
Zend虚拟机的指令称之为opline,每条指令对应一个opcode。
PHP代码在编译后生成opline,Zend虚拟机根据不同的opline完成PHP代码的执行,opline由操作指令、操作数和返回值组成,与机器指令非常类似,opline对应的接口体为Zend_op
PHP代码会被翻译成一条条的opline,分解成最基本的操作。
opcode
opcode有时被称为所谓的字节码(bytecode),是被软件解释器解释执行的指令集。
操作数
每个opcode对应的handler最多可以使用两个操作数(<=2)
11.2.4 指令集
11.2.5 执行数据
11.2.6 执行栈