原文地址http://nikic.github.io/2017/04/14/PHP-7-Virtual-machine.html

写这篇文章的目的是基于 php7,阐述 Zend Virtual Machine 的内部实现。这不是一篇综合描述,我将尽可能地覆盖到所有重要的部分和细节。

本文的描述对象是 php7.2 版本,但是几乎所有的特性都已经应用在了 php7.0/7.1 中了。然而,它们同 php5.x 系列 VM 的不同之处同样也很重要,我会很有耐心的同步描述。

这篇文章主要是从指令的角度来阐述,只有在末尾花了少量篇幅描述了 C 语言实现 VM 的细节。但是在文章开始之前,我想先提供一些实现 VM 的主要代码文件:...

Preface

当今世道,各种高级语言百花齐放。然而会有人发出这样的疑问–计算机真的能够识别这么多语言吗?稍微有点常识的人都知道,这显然是不可能滴!在计算机的世界里,他们能够直接识别的只有机器语言。然而,由于机器语言对人类不够友好,所以人们才发明了汇编,c,Java…许许多多的人类易读的编程语言,所以我个人对编程语言的理解一直是其实他们就是机器语言的语法糖,而编程语言的创造过程,就是定义一种合理的,没有二义性的语法规则,然后就是通过直接或间接的方式实现该语法到机器语言的转换过程。既然是这样的话,那么我们就很容易想到,计算机语言是一个自我完善的过程:首先我们定了一种非常简单的 x1(这里只是用来举例说明,有...