上一页 1 ··· 8 9 10 11 12 13 14 15 16 下一页
摘要: php内核中的内存分配 使用的函数有 emalloc(), erealloc() ,这两个函数分别是malloc(),realloc()函数的封装 关于内存分配有四个容器:cache,小块内存链表,大块内存(链表+树), 剩余rest内存链表 大块内存(链表+二叉排序树):链表中每个bucket除了 阅读全文
posted @ 2015-01-23 14:16 taek 阅读(2713) 评论(0) 推荐(0) 编辑
摘要: zend_class_entry typedef struct _zend_property_info { zend_uint flags; char *name; int name_length; ulong h; char *doc_comment; int doc_comment_len; z 阅读全文
posted @ 2015-01-12 23:20 taek 阅读(1743) 评论(0) 推荐(0) 编辑
摘要: 程序 1.BNF 范式 获取class_name,并生成opcode ZEND_FETCH_CLASS 执行 ZEND_FETCH_CLASS 理解版 //#define EX_T(offset) (*EX_TMP_VAR(execute_data, offset)) //#define EX_TM 阅读全文
posted @ 2015-01-11 22:37 taek 阅读(558) 评论(0) 推荐(0) 编辑
摘要: static union _zend_function *zend_std_get_method(zval **object_ptr, char *method_name, int method_len, const zend_literal *key TSRMLS_DC) /* {{{ */ { zend_function *fbc; zval *object = *objec... 阅读全文
posted @ 2015-01-11 22:37 taek 阅读(1643) 评论(0) 推荐(0) 编辑
摘要: 1.BNF范式%token T_OBJECT_OPERATOR "-> (T_OBJECT_OPERATOR)"unticked_statement:| expr ';' { zend_do_free(&$1 TSRMLS_CC); }expr: r... 阅读全文
posted @ 2015-01-11 22:37 taek 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 0.php代码 1.BNF范式(语法规则) 2.生成opcode 3.执行opcode 执行$a.$b时,执行concat_function,第一个参数为一个临时变量(类型为zval), 执行函数后,这个临时变量即保存了concat后的字符串的首地址,然后这个临时变量会放到yyvsp这个数组里,当再 阅读全文
posted @ 2014-11-25 16:41 taek 阅读(1068) 评论(0) 推荐(0) 编辑
摘要: 1.语法分析unticked_statement:| T_ECHO echo_expr_list ';';echo_expr_list: echo_expr_list ',' expr { zend_do_echo(&$3 TSRMLS_CC); } | expr ... 阅读全文
posted @ 2014-11-24 16:00 taek 阅读(1607) 评论(0) 推荐(0) 编辑
摘要: 结论: 一 编译 a.对 函数声明进行词法分析和语法分析:在语法分析中的函数zend_do_begin_function_declaration 作用是: 初始化zend_op_array,填充 function_name ,line_start ,设定相应opcode:ZEND_DECLARE_F 阅读全文
posted @ 2014-11-11 15:26 taek 阅读(1413) 评论(0) 推荐(0) 编辑
摘要: php的语法分析的主要作用是验证词法分析的基础上将token组成的序列,在php这门语言中是否是一个有效的句子,也可以理解为这些token序列是否匹配设计php这门语言时的语法模型,在匹配的情况下构建具体的程序(组建opcode),以供编译后期使用。 比如:在设计php语言时,需要设计一套语法... 阅读全文
posted @ 2014-09-24 17:54 taek 阅读(2870) 评论(1) 推荐(1) 编辑
摘要: php中的内存分配有用类似emalloc这样的函数,emalloc实际上是C语言中的malloc的一层封装,php启动后,会向OS申请一块内存,可以理解为内存池,以后的php分配内存都是在这块内存池中进行的,以至于efree,也不会向OS退回内存,而只是设置标志位,标识efree这块内存不再使用... 阅读全文
posted @ 2014-09-11 15:15 taek 阅读(6063) 评论(2) 推荐(1) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 下一页