从C生成PHP操作码/字节码

时间:2014-08-22 13:48:31

标签: php compiler-construction bytecode c-api

假设我想在C中编写一个小编译器,它使用自定义语言(typoscript)生成PHP字节码。我该怎么办? PHP提供API吗?或者我是否需要破解默认PHP编译器的部分内容?

编辑:更一般地说,不是用PHP编写解析器,而是用C编写它并生成PHP操作码(因此它与其他PHP代码兼容)?

编辑2 :这可以作为PHP的扩展来完成,所以我将研究它。

2 个答案:

答案 0 :(得分:1)

好。字节码的生成是一回事,然后加载字节码。

为了加载生成的字节码,我建议查看APC(操作码缓存模块)。它可以读取操作码并执行它。改为阅读字节码应该相当简单。 至于字节码的生成,我不认为你会在PHP自己的源代码树之外找到任何东西。 (当然,你可以从正在运行的php引擎中转储操作码,但这不是你要求的)

但我必须问你期望获得什么。由于唯一的PHP理解PHP字节码,因此代码仍然需要在PHP的虚拟机中运行。因此,您只需在解析和解释源时节省cpu时间。通过使用APC进行缓存,即使“延迟”也消失了。

答案 1 :(得分:-2)

您可以使用Facebook的HipHop(http://en.wikipedia.org/wiki/HipHop_for_PHP)将PHP代码编译为二进制文件。但是,我不认为Typo脚本和PHP之间的转换目前存在。