用python寫C虛擬機(一)
時間:2023-06-27 07:57:02 | 來源:網(wǎng)站運營
時間:2023-06-27 07:57:02 來源:網(wǎng)站運營
用python寫C虛擬機(一):最近這一段時間看了很多新的編程語言的設(shè)計,但是都沒有解決我眼下遇到的痛點,所以準備自己設(shè)計一個編程語言。然而,在開始的階段,先準備擼一個C的虛擬機(有興趣的同學可以把虛擬機再翻譯成llvm ir,形成完整編譯器),當然c實現(xiàn)的標準也不會嚴格按照某個文檔(正式設(shè)計的時候,我會考慮給出詳細標準的),這里只是做一個練手。
先說說看為什么要寫成虛擬機,C在我的概念里,只是一個方便點的圖靈機指令集(s1 value new_value s2/s1 value LR s2)。由于這里只考慮軟件的簡單實現(xiàn),設(shè)計硬件相關(guān)的結(jié)構(gòu),有興趣的同學可以留評論,因此,此處并不會設(shè)計一個功能特別強大的CPU出來,只會有一些簡單的指令集,保證能圖靈完備(嗯,不考慮把虛擬機設(shè)計成bf),這樣對于實現(xiàn)C的操作已經(jīng)足夠了,也把這個簡易實現(xiàn)從復雜的設(shè)計中解放出來(作為思路給我后面的設(shè)計做參考,所以不需要有太多東西)
之后是喜聞樂見的詞法分析器和語法分析器,再翻譯成上面那個虛擬機的指令,這樣就完成了一個簡單的c語言的虛擬機,當然后面會考慮翻譯到llvm ir的,這就不在C語言上重復造輪子了╮(╯▽╰)╭