对于那些不关注POJ(JVM上的Pascal)的人来说,它是一个编译器,将子集从Pascal转换为JASM(Java Assembly),以便我们可以使用JVM作为执行环境
在上一篇文章中,实现了对Pascal的read/readln的支持,这些函数可以从标准输入(stdin)读取数据。在本出版物中,我们将完成 POJ 的目标之一:从标准输入中读取数字并递归计算阶乘。
当我们为 JVM 进行编译时,有必要详细说明这个令人难以置信的虚拟机的各个点的功能。因此,我多次详细介绍 JVM 的内部工作原理以及它的一些指令(操作码)。
正如项目开始时提到的,目标之一是能够递归计算阶乘,从标准输入中读取要计算的数字。迄今为止 POJ 中的实现已经使这一目标成为可能:
现在是时候验证迄今为止所开发的内容了。也就是说,来自下面的 Pascal 程序:
POJ 正确生成以下程序集:
我们通过这个项目结束了这次学习之旅。
可以通过这个项目探索编译器领域的一些有趣的事情(例如生成代码的优化)。谁知道呢,也许在不久的将来我们会开始一个新的优化系列:-)
包含项目完整代码和文档的存储库在这里。
以上是防火测试:递归阶乘的详细内容。更多信息请关注PHP中文网其他相关文章!