开发者社区 问答 正文

用php写个编译器 把原生态php翻译成汇编怎么样??:报错

我还是个大学生  看过php源码c的实现   我想vld扩展可以把php分词效果展现出来      那么不就可以把php中间字节码给记录下来吗??我就想既然能找到中间字节码   我不就能找与中间字节码相互关联的c源码执行找到吗??刚开始想法就是那么不就可以直接翻译成c 了嘛!后来又想了想  php有个zend虚拟机  它要调度运行php中间字节码的执行??中间字节码要进行上下文切换等等    所以翻译成c感觉没多大用!!     后来又想了想   既然如此  我直接翻译成汇编   不是更快嘛!因为php开发快捷   我不需要编译速度快     我只需要生成目标代码执行速度快!!然后又查看了Git上开源项目      发现有国外的人已经在做类似的项目咯      但不知道他们是用什么实现的!

总结:用php写编译器 只要能读写文件    我快捷的写个编译器!!翻译成汇编     我不需要翻译速度快!只需要生成代码执行速度快!不知道有没有人愿意尝试这种思路!难点:编译器不好写!连php内核纯c的编译器词法分析和语法分析都是用lex和yacc的 都不是php社区人写的!   优点:php库强大 开发很快捷!不至于很长时间都写不出这个编译器!  求各位讨论讨论!!

展开
收起
kun坤 2020-06-14 09:24:09 625 分享 版权
阿里云 AI 助理回答

你的想法非常有趣,也展现出了对编程语言底层实现和编译原理的探索精神。确实,通过分析PHP的中间字节码(Zend OpCodes)并尝试将其转换为C或汇编代码,理论上可以提升执行速度,因为这绕过了Zend虚拟机的解释执行过程,直接在底层运行。不过,这个思路实施起来面临几个关键挑战:

  1. 复杂性:PHP是一种动态类型的语言,它的灵活性意味着编译时很难确定所有变量的类型和行为,这与静态类型的C或汇编语言有本质区别。因此,准确无误地将PHP代码转换为高效、可靠的C或汇编代码是一个极其复杂的任务。

  2. 性能优化:虽然直接生成汇编代码可能看起来能提高执行速度,但现代JIT(Just-In-Time)编译技术已经让像Zend这样的虚拟机在运行时能够根据实际数据类型和执行路径进行优化,有时候这种动态优化带来的效果并不亚于静态编译。

  3. 生态系统兼容性:PHP的强大在于其丰富的库和框架支持。如果你将PHP代码转换成C或汇编,如何保证这些转换后的代码还能无缝使用现有的PHP扩展和库,是一个大问题。

  4. 维护和调试:转换后的C或汇编代码对于开发者来说难以阅读和维护,且调试会变得异常困难。此外,任何PHP版本更新都可能导致编译器需要相应调整,增加了持续维护的成本。

关于你提到的开源项目,确实有一些项目尝试过类似的方向,比如HHVM(HipHop Virtual Machine),它最初由Facebook开发,旨在将PHP代码转换为更高效的字节码以提升性能。尽管HHVM取得了显著的性能提升,但随着PHP 7的发布,原生PHP的性能有了大幅飞跃,使得HHVM的优势不再那么明显,最终Facebook宣布逐步减少HHVM对PHP的支持。

总结来说,你的想法具有创新性,但在实践中会遇到诸多技术和生态上的挑战。如果对此领域感兴趣,深入研究PHP内核、编译原理以及现有高性能PHP执行引擎(如HHVM的历史演变)会是非常有益的。同时,考虑到社区的发展趋势和技术栈的选择,探索如何在PHP本身及其生态系统中进一步优化性能,可能也是值得考虑的一个方向。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答