Heim > Backend-Entwicklung > PHP-Tutorial > Opcode-Operanden 5 verschiedene Typen

Opcode-Operanden 5 verschiedene Typen

藏色散人
Freigeben: 2023-04-07 18:34:02
nach vorne
1902 Leute haben es durchsucht

zend_op_array.opcodes verweist auf die Anweisungsliste. Die spezifische Struktur jeder Anweisung ist wie folgt:

struct _zend_op {  //  *opline  *opcodes
    const void *handler; //指令执行handler
    znode_op op1; //操作数1
    znode_op op2; //操作数类型实际就是个32位整形,它主要用于存储一些变量的索引位置、数值记录等等
    znode_op result; //返回值
    uint32_t extended_value;
    uint32_t lineno;
    zend_uchar opcode; //opcode指令
    zend_uchar op1_type; //操作数1类型
    zend_uchar op2_type;
    zend_uchar result_type; //返回值类型
};

//操作数结构
//比如赋值语句:"$a = 45;",两个操作数分别记录"$a"、"45"的存储位置,执行时根据op2取到值"45",
//然后赋值给"$a",而"$a"的位置通过op1获取到
//当然操作数并不是全部这么用的,上面只是赋值时候的情况,其它操作会有不同的用法
//如函数调用时的传参,op1记录的就是传递的参数是第几个,op2记录的是参数的存储位置,
//result记录的是函数接收参数的存储位置。
typedef union _znode_op { //操作数类型实际就是个32位整形,它主要用于存储一些变量的索引位置、数值记录等等
    uint32_t      constant; //操作数记录着当前指令的关键信息, 可以用于变量的存储、访问
    uint32_t      var;
    uint32_t      num;
    uint32_t      opline_num; /*  Needs to be signed */
#if ZEND_USE_ABS_JMP_ADDR
    zend_op       *jmp_addr;
#else
    uint32_t      jmp_offset;
#endif
#if ZEND_USE_ABS_CONST_ADDR
    zval          *zv;
#endif
} znode_op;
Nach dem Login kopieren
rrree

Weitere PHP-bezogene Kenntnisse finden Sie auf der PHP-Chinese-Website!

Das obige ist der detaillierte Inhalt vonOpcode-Operanden 5 verschiedene Typen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage