有一個困惑已久的問題:編譯"C/C++編譯器"的編譯器是用什麼編譯的?
這個過程叫做自滾,是逐級滾大。最早用彙編寫一個只能編譯十分簡單的C語言子集的編譯器,之後慢慢滾大之後達到自舉。
COBOL+彙編
如果你問彙編編譯器是用什麼編譯器編譯的
我告訴你是物理設備打孔針
翻翻貝爾實驗室的歷史就能發現答案
最早的雞蛋是哪只雞下的
就是C/C++編譯器啊,C/C++編譯器一般都可以自舉
C語言基於彙編,
彙編基於機器語言,
所以編譯器的作用是將高級語言翻譯為機器語言,並加入相應優化。
在現代計算機技術中,通常都有操作系統,在操作系統里有對應的編譯系統,
所以很多時候會出現本應該是將高級語言轉換成機器語言的編譯軟體反而能夠用高級語言來編寫。(應該使用彙編語言作為中間需要進行轉換)。
所以,當你使用一台裸機的時候,你想要編寫這個編譯軟體的話,你應該使用與機器對應的彙編語言來完成。
在現代的操作系統中,已經省去了你的這些麻煩。
@蕭井陌 @艾慶興 @「已註銷」 @vczh
先用彙編寫第一個編譯器,編譯以後,再用第一版編譯器編譯以後的編譯器。
就比如,golang的編譯器是先用C語言編譯第一版,後來就用go編譯器編譯後來的go編譯器了。
核心代碼是低級語言,通過自編譯擴展
用上個版本的編譯器
最初一定是彙編,穩定到一定階段後就可以自己編譯自己了。
推薦閱讀: