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

5 投票
4 回答
2513 浏览
提问于 2025-04-16 06:51

这个问题范围很广,我主要想找一些资源来学习更多相关内容。

我知道Python的解释器是用C语言写的,它会生成字节码,然后在同样用C写的Python虚拟机上运行(对吧?)。我的问题是,是否有可能用Python自己来实现这两个东西?我想问的是,能不能用Python写一个操作系统,特别是完全不进行静态编译的情况下?

如果我理解没错,Python没有汇编器,而汇编器也得用Python来写。这些事情在技术上(可行性上)能做到吗?还是说Python的动态类型会带来一些问题?

我对微处理器架构、汇编语言和机器码有一点了解,这些是最近电气工程专业毕业生在学校学到的知识。但当我看整个Python这样的高级语言时,就会感到迷茫。

4 个回答

2

James Tauber 还用 Python 创建了一个概念验证的操作系统,叫做 Cleese。最近,他开始努力让这个操作系统能够在 Pypy 上运行,Pypy 是用 Python 编写的 Python 解释器。

9

这是编译器,不是解释器。不过你可以看看 PyPy

3

首先,你需要写一个Python编译器(不是解释器),可以用任何语言来写,最好是用Python。第一次运行这个编译器的时候,需要通过解释器来运行。

然后,你就可以用这个编译器自己来编译自己,这样就能得到一个不需要解释器的本地编译器。

接着,你就可以用这个编译器把任何Python代码编译成本地代码。

这个过程叫做自举(bootstrapping),很多主要的编译器在处理多种语言时都会用到这个方法。

想了解更多关于这个过程的信息,可以查看这里: http://en.wikipedia.org/wiki/Bootstrapping_(compilers)

至于创建一个操作系统,至少你需要实现一个Python解释器,如果你想避免使用编译过的代码。如果你把Python解释器写成一个微内核,那么你就可以用Python来编写操作系统的其他部分。(编辑:我刚才不小心描述了Cleese,Jiaaro提到过这个 :))

撰写回答