日期:2014-05-17  浏览次数:20391 次

facebook hiphop php vm 实现概述
            facebook hiphop php vm 实现概述
一、src目录概述:
compiler:编译器
    expression:php的expression所对应的ast node使用的数据结构
    statement:对应php的语句
    parser:生成出来ast
    analysis:静态语义分析(变量类型、作用域、常量表、变量表、函数表……)
ffi:多语言交互层(大概是实现胶水的接口)
hphp:入口
idl:接口定义
system:php这一层的系统环境
third_party:借用的第三方包
util:工具类
runtime:整个转换器的运行时系统
    tmp:生成的文件
    ext:包装给php使用的外部函数,即php中使用的一些基础功能需要有对应的c++实现(因为此runtime是用c++实   现 的,所以这些函数也只能用c++来写),当然在实现时可以使用第三方包
    base:运行时中要使用的基础数据结构和功能(ext中的外部函数的功能需要此处的支持)
    eval:核心的runtime环境

    可以看出这些代码中大家最关心的应该是compiler和runtime模块。
二、入口
    hphp/main.cpp
三、compiler概述
    1、分析的层次关系从大到小是 package----class---funtion---variable---constant。
    2、scanner和parser的实现和一般的编译器的实现是一样的,scanner的出口int getNextToken(ScannerToken &t, Location &l);,parser的出口Parser::ParseString()
    3、静态分析;采用遍历者模式,分析结果封装在analusis_result这个数据结构中,即此数据结构存储此阶段的结果。具体的代码中主要分析了类中的函数情况、函数中表达式情况、控制流图(ControlFlowGraph)、表达式字典、数据流(如检查赋值语句的左值是否合法)、符号表等
四、runtime概述
    1、入口 eval.cpp
    2、RequestEvalState 管理符号表信息

今天就先写这些,如果有人感兴趣的话,我再往细里写吧!
1 楼 lj3362569 2011-12-19  
可以再讲具体点么?还有现有的hiphop不支持哪些功能?
2 楼 eric_weitm 2011-12-21  
lj3362569 写道
可以再讲具体点么?还有现有的hiphop不支持哪些功能?

写博客只是业余爱好,因为时间有限,我是尽量用最少的字表达最多的信息。也不知道是否有人对虚拟机的实现感兴趣,如果有人看的话,我会继续写的。hiphop 还不支持什么我现在还不知道,建议你去他们的官网去看看,应该会有介绍吧!