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
    image.png
    PHP代码会被翻译成一条条的opline,分解成最基本的操作。
    opcode
    opcode有时被称为所谓的字节码(bytecode),是被软件解释器解释执行的指令集。
    操作数
    每个opcode对应的handler最多可以使用两个操作数(<=2)

    11.2.4 指令集
    image.png
    image.png
    11.2.5 执行数据

    11.2.6 执行栈