Skip to content

Commit 366c812

Browse files
authored
Merge pull request pangudashu#18 from zimuyang/master
Update zend_compile_opcode.md
2 parents 336032b + 83bd270 commit 366c812

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

3/function_implement.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function my_func(){
88
...
99
}
1010
```
11-
汇编中函数对应的是一组独立的汇编指令,然后通过call指令实现函数的调用前面已经说过PHP编译的结果是opcode数组,与汇编指令对应PHP用户自定义函数的实现就是将函数编译为独立的opcode数组,调用时分配独立的执行栈依次执行opcode,所以自定义函数对于zend而言并没有什么特别之处,只是将opcode进行了打包封装,实际PHP脚本中函数之外的指令整个可以认为是一个函数(或者理解为main函数更直观)。
11+
汇编中函数对应的是一组独立的汇编指令,然后通过call指令实现函数的调用前面已经说过PHP编译的结果是opcode数组,与汇编指令对应PHP用户自定义函数的实现就是将函数编译为独立的opcode数组,调用时分配独立的执行栈依次执行opcode,所以自定义函数对于zend而言并没有什么特别之处,只是将opcode进行了打包封装。PHP脚本中函数之外的指令,整个可以认为是一个函数(或者理解为main函数更直观)。
1212

1313
```php
1414
/* function main(){ */

3/zend_compile_opcode.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ void zend_compile_expr(znode *result, zend_ast *ast)
516516
```
517517
>> __第3步:__ 上面两步已经分别生成了变量赋值的op1、op2,下面就是根据这俩值生成opcode的过程。
518518
```c
519-
tatic zend_op *zend_emit_op(znode *result, zend_uchar opcode, znode *op1, znode *op2)
519+
static zend_op *zend_emit_op(znode *result, zend_uchar opcode, znode *op1, znode *op2)
520520
{
521521
zend_op *opline = get_next_op(CG(active_op_array)); //当前zend_op_array下生成一条新的指令
522522
opline->opcode = opcode;

0 commit comments

Comments
 (0)