2010-11-10 81 views
4

這是一個非常大的問題,我主要是在尋找資源,在這裏我可以更多地瞭解以下內容。python字節碼,解釋器和虛擬機

我知道python解釋器是用C語言編寫的,它產生的字節碼也要在也用C寫的python虛擬機上運行(對吧?)。我的問題是有可能在python中實現這兩個?我想我要去哪裏,這是在python中編寫類似於操作系統的(技術)可能性,特別是沒有靜態編譯任何東西?

如果我理解正確,python沒有一個彙編程序,它必須在python中編寫。這些事情是否可以在技術上(可行?)完成?或者,python的動態類型會造成某種問題?

我對微處理器架構,彙編和機器代碼有了一些瞭解,最近EE畢業生在學校學到了什麼。但是我對於像python這樣的高級語言的整個畫面都會迷失方向。

+0

與CPython解釋器相比,您找不到更清晰且更易於閱讀的代碼片段。 Just look at it。 – novalis 2010-11-10 18:58:33

+0

@novalis:Python源代碼庫已移至http://hg.python.org/cpython/ – 2012-04-09 16:54:16

回答

3

您首先需要編寫一個Python編譯器(而不是解釋器),使用任何語言,最好是Python。編譯器的第一次運行需要通過解釋器運行。

然後,您將編譯自己的編譯器,導致本地編譯器不需要解釋器。

然後,您可以使用編譯器將任何Python編譯爲本機代碼。

這個過程被稱爲自舉,許多語言的主要編譯器(如果不是大多數)使用該過程。

你可以閱讀更多關於這個過程在這裏:http://en.wikipedia.org/wiki/Bootstrapping_(compilers)

作爲創建一個操作系統,你需要實現,作爲最低限度,一個Python解釋器,如果你想避免編譯代碼。如果您將Python解釋器編寫爲微內核,則可以使用Python編寫其餘的操作系統。 (編輯:我只是無意中描述了Cleese,Jiaaro提到:))

9

編譯器,而不是解釋器。但是你正在尋找PyPy

1

關於操作系統的實現問題,您需要一個系統編程語言來實現操作系統。除非你能想象出一個python彙編程序,並將python轉換爲直接可執行的二進制文件,而不需要虛擬機,否則就不可能做到純粹的python。

如果你想在程序集中編寫代碼並獲得python來爲你組裝,看看稍微過時的實驗pyasm

2

詹姆斯堡還內置概念OS的證明,在蟒蛇叫Cleese,最近開始努力得到它的工作在Pypy(Python解釋器Python編寫的)