Python 字节码、解释器和虚拟机
这个问题范围很广,我主要想找一些资源来学习更多相关内容。
我知道Python的解释器是用C语言写的,它会生成字节码,然后在同样用C写的Python虚拟机上运行(对吧?)。我的问题是,是否有可能用Python自己来实现这两个东西?我想问的是,能不能用Python写一个操作系统,特别是完全不进行静态编译的情况下?
如果我理解没错,Python没有汇编器,而汇编器也得用Python来写。这些事情在技术上(可行性上)能做到吗?还是说Python的动态类型会带来一些问题?
我对微处理器架构、汇编语言和机器码有一点了解,这些是最近电气工程专业毕业生在学校学到的知识。但当我看整个Python这样的高级语言时,就会感到迷茫。
4 个回答
9
这是编译器,不是解释器。不过你可以看看 PyPy。
3
首先,你需要写一个Python编译器(不是解释器),可以用任何语言来写,最好是用Python。第一次运行这个编译器的时候,需要通过解释器来运行。
然后,你就可以用这个编译器自己来编译自己,这样就能得到一个不需要解释器的本地编译器。
接着,你就可以用这个编译器把任何Python代码编译成本地代码。
这个过程叫做自举(bootstrapping),很多主要的编译器在处理多种语言时都会用到这个方法。
想了解更多关于这个过程的信息,可以查看这里: http://en.wikipedia.org/wiki/Bootstrapping_(compilers)
至于创建一个操作系统,至少你需要实现一个Python解释器,如果你想避免使用编译过的代码。如果你把Python解释器写成一个微内核,那么你就可以用Python来编写操作系统的其他部分。(编辑:我刚才不小心描述了Cleese,Jiaaro提到过这个 :))