Python字节码、解释器和虚拟机

5

这是一个非常广泛的问题,我主要是在寻找可以了解以下内容的资源。

我知道Python解释器是用C语言编写的,并生成字节码以在Python虚拟机上运行,后者也是用C语言编写的(对吗?)。我的问题是,是否可能在Python本身中实现这两个东西?我想知道的是,在Python中编写像操作系统这样的东西的(技术)可能性,特别是不需要静态编译任何内容的情况下是否可行?

如果我理解正确,Python没有汇编器,必须在Python中编写。这些东西从技术上讲(可行性?)是否可以完成?还是Python的动态类型会带来某种问题?

我了解微处理器架构、汇编和机器码,这是最近一位电气工程毕业生在学校里学到的。但是,对于像Python这样的高级语言,我对整个图景感到迷茫。


你不会找到比CPython解释器更干净、更易读的代码了。<a href="http://svn.python.org/view/python/trunk/Python/ceval.c?revision=82177&view=markup">看看它</a>。 - novalis
@novalis:Python源代码仓库已经迁移到http://hg.python.org/cpython/。 - Fred Foo
4个回答

9

编译器,非解释器。但你正在寻找PyPy


3
首先,您需要使用任何语言编写一个Python编译器(非解释器),最好是Python。第一次运行编译器需要通过解释器运行。
然后,您可以使用编译器将其本身编译,从而得到一个不需要解释器的本地编译器。
然后,您可以使用编译器将任何Python代码编译为本地代码。
这个过程称为引导,许多,如果不是大部分,主要语言的编译器都使用此方法。
如果要创建操作系统,则至少需要实现一个Python解释器,以避免编译代码。如果您将Python解释器编写为微内核,则可以使用Python编写操作系统的其余部分。(编辑:我无意中描述了Jiaaro提到的Cleese)。
您可以在此处阅读更多关于此过程的信息:http://en.wikipedia.org/wiki/Bootstrapping_(compilers)

2

James Tauber曾经使用Python构建了一个名为Cleese的概念性操作系统,并最近开始努力让它在Pypy上运行(一种用Python编写的Python解释器)。


1
关于操作系统实现问题,您需要一种系统编程语言来实现操作系统。除非您可以想出一个Python汇编器并将Python转换为直接可执行的二进制文件(不需要VM),否则纯Python实现将不可能。
如果您想在汇编中编写代码,并让Python为您汇编,请查看稍微过时和实验性的pyasm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接