一个处于萌芽阶段的知识库,用于持续分享自己的所见、所学、所思!
作者:heibaiying
博客:https://blog.csdn.net/m0_37809146
作者:heibaiying
博客:https://blog.csdn.net/m0_37809146
2021年12月07日 Java 内存区域、垃圾收集算法、经典垃圾收集器、双亲委派模型、分层编译、热点代码探测、方法内联、逃逸分析
TIPI项目是一个自发项目, 项目主要关注PHP的内部实现, 以及PHP相关的方方面面, 该项目包括《深入理解PHP内核》这本书,以及一些相关的PHP项目,例如一些PHP扩展及研究项目.
你可以联系以下作者
reeze http://reeze.cn reeze.xia@gmail.com
er http://www.zhangabc.com er@zhangabc.com
phppan http://www.phppan.com/ phppan.p@gmail.com
HonestQiao http://www.wapm.cn/ honestqiao@gmail.com
mengkang https://mengkang.net i@zhoumengkang.com
或者发给所有组员: team@php-internals.com
贡献者
感谢这些贡献者:https://github.com/reeze/tipi/contributors
你可以联系以下作者
reeze http://reeze.cn reeze.xia@gmail.com
er http://www.zhangabc.com er@zhangabc.com
phppan http://www.phppan.com/ phppan.p@gmail.com
HonestQiao http://www.wapm.cn/ honestqiao@gmail.com
mengkang https://mengkang.net i@zhoumengkang.com
或者发给所有组员: team@php-internals.com
贡献者
感谢这些贡献者:https://github.com/reeze/tipi/contributors
2022年12月19日
2022年12月18日 PHP语言作为脚本语言的一种,由于不需要进行编译,所以通常PHP程序的分发都是直接发布源代码。对于一些开源软件来说,这并没有什么问题,因为它本来就希望有更多的人阅读代码,希望有更多的人参与进来,而对于商业代码来说,这却是一个不太好的消息,不管是从商业秘密,还是从对公司产权的保护来说却是一个问题,基于此,从而引出了对PHP代码的加密和解密的议题。例如国内的Discuz论坛程序在开源之前要运行是必须安装Zend Optimizer的,Zend官方的代码加密软件是Zend Guard,可以用来加密和混淆PHP代码,这样分发出去的代码就可以避免直接分发源代码,不过加密后的代码是无法直接运行的,在运行时还需要一个解密的模块来运行加密后的程序,要运行Zend Guard加密后的代码需要安装Zend Optimizer(PHP5.2之前的版本),或者安装Zend Guard Loader(PHP5.3版本)扩展才能运行。
2022年12月16日
2022年12月16日 世上没有无缘无故的爱,也没有无缘无故的恨。
语言从广义上来讲是人们进行沟通交流的各种表达符号。每种语言都有专属于自己的符号,表达方式和规则。就编程语言来说,它也是由特定的符号,特定的表达方式和规则组成。语言的作用是沟通,不管是自然语言,还是编程语言,它们的区别在于自然语言是人与人之间沟通的工具,而编程语言是人与机器之间的沟通渠道。相对于自然语言,编程语言的历史还非常短,虽然编程语言是站在历史巨人的基础上创建的,但是它还很小,还是一个小孩。它只能按编程人员所给的指令翻译成对应的机器可以识别的语言。它就相当于一个转化工具,将人们的知识或者业务逻辑转化成机器码(机器的语言),让其执行对应的的操作。而这些指令是一些规则,一些约定,这些规则约定都是由编程语言来处理。
就PHP语言来说,它也是一组符合一定规则的约定的指令。在编程人员将自己的想法以PHP语言实现后,通过PHP的虚拟机将这些PHP指令转变成C语言(可以理解为更底层的一种指令集)指令,而C语言又会转变成汇编语言,最后汇编语言将根据处理器的规则转变成机器码执行。这是一个更高层次抽象的不断具体化,不断细化的过程。
在这一章,我们讨论PHP虚拟机是如何将PHP语言转化成C语言。从一种语言到另一种语言的转化称之为编译,这两种语言分别可以称之为源语言和目标语言。这种编译过程通常发生在目标语言比源语言更低级(或者说更底层)。语言转化的编译过程是由编译器来完成,编译器通常被分为一系列的过程:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等。前面几个阶段(词法分析、语法分析和语义分析)的作用是分析源程序,我们可以称之为编译器的前端。后面的几个阶段(中间代码生成、代码优化和目标代码生成)的作用是构造目标程序,我们可以称之为编译器的后端。一种语言被称为编译类语言,一般是由于在程序执行之前有一个翻译的过程,其中关键点是有一个形式上完全不同的等价程序生成。而PHP之所以被称为解释类语言,就是因为并没有这样的一个程序生成,它生成的是中间代码,这只是PHP的一种内部数据结构。
语言从广义上来讲是人们进行沟通交流的各种表达符号。每种语言都有专属于自己的符号,表达方式和规则。就编程语言来说,它也是由特定的符号,特定的表达方式和规则组成。语言的作用是沟通,不管是自然语言,还是编程语言,它们的区别在于自然语言是人与人之间沟通的工具,而编程语言是人与机器之间的沟通渠道。相对于自然语言,编程语言的历史还非常短,虽然编程语言是站在历史巨人的基础上创建的,但是它还很小,还是一个小孩。它只能按编程人员所给的指令翻译成对应的机器可以识别的语言。它就相当于一个转化工具,将人们的知识或者业务逻辑转化成机器码(机器的语言),让其执行对应的的操作。而这些指令是一些规则,一些约定,这些规则约定都是由编程语言来处理。
就PHP语言来说,它也是一组符合一定规则的约定的指令。在编程人员将自己的想法以PHP语言实现后,通过PHP的虚拟机将这些PHP指令转变成C语言(可以理解为更底层的一种指令集)指令,而C语言又会转变成汇编语言,最后汇编语言将根据处理器的规则转变成机器码执行。这是一个更高层次抽象的不断具体化,不断细化的过程。
在这一章,我们讨论PHP虚拟机是如何将PHP语言转化成C语言。从一种语言到另一种语言的转化称之为编译,这两种语言分别可以称之为源语言和目标语言。这种编译过程通常发生在目标语言比源语言更低级(或者说更底层)。语言转化的编译过程是由编译器来完成,编译器通常被分为一系列的过程:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等。前面几个阶段(词法分析、语法分析和语义分析)的作用是分析源程序,我们可以称之为编译器的前端。后面的几个阶段(中间代码生成、代码优化和目标代码生成)的作用是构造目标程序,我们可以称之为编译器的后端。一种语言被称为编译类语言,一般是由于在程序执行之前有一个翻译的过程,其中关键点是有一个形式上完全不同的等价程序生成。而PHP之所以被称为解释类语言,就是因为并没有这样的一个程序生成,它生成的是中间代码,这只是PHP的一种内部数据结构。
2022年12月15日 在wiki中虚拟机的定义是:虚拟机(Virtual Machine),在计算机科学中的体系结构里,是指一种特殊的软件,他可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现。
虚拟机是一种抽象的计算机,它有自己的指令集,有自己的内存管理体系。在此类虚拟机上实现的语言比较低抽象层次的语言更加明了,更加简单易学。
虚拟机是一种抽象的计算机,它有自己的指令集,有自己的内存管理体系。在此类虚拟机上实现的语言比较低抽象层次的语言更加明了,更加简单易学。