當前位置:首頁 » 編程軟體 » 自編譯就是自舉嗎

自編譯就是自舉嗎

發布時間: 2022-04-30 07:53:46

㈠ 內核自舉是什麼

自舉的意思是為你的系統建立一個工具鏈(C庫和編譯器),之後安裝所有的核心系統軟體包。要自舉一個系統,先安裝一個stage3。在你開始配置內核之前,修改一下bootstrap.sh以便它適合你的需要,接著就運行它。
代碼 3.7: 自舉系統
# cd /usr/portage/scripts
# vi bootstrap.sh

# ./bootstrap.sh
下一步,使用新建的工具鏈重新建立所有的核心系統軟體包。因為stage3的taball已經提供了它們,所以我們需要重新建立它們。
代碼 3.8: 重建所有的核心系統包
# emerge -e system
現在你可以繼續配置內核。並且你將不能再使用預編譯的GRP軟體包了.
====
書上寫的 應該是重新load

㈡ 什麼是編程語言的自舉

就是自己的編譯器可以自行編譯自己的編譯器。
實現方法就是這個編譯器的作者用這個語言的一些特性來編寫編譯器並在該編譯器中支持這些自己使用到的特性。
首先,第一個編譯器肯定是用別的語言寫的(不論是C還是Go還是Lisp還是Python),後面的版本才能談及自舉。
至於先有雞還是先有蛋,我可以舉個這樣的不太恰當的例子:比如我寫了一個可以自舉的C編譯器叫作mycc,不論是編譯器本身的執行效率還是生成的代碼的質量都遠遠好於gcc(本故事純屬虛構),但我用的都是標準的C寫的,那麼我可以就直接用gcc編譯mycc的源碼,得到一份可以生成高質量代碼但本身執行效率低下的mycc,然後當然如果我再用這個生成的mycc編譯mycc的源碼得到新的一份mycc,新的這份不光會產生和原來那份同等高質量的代碼,而且還能擁有比先前版本更高的執行效率(因為前一份是gcc的編譯產物,後一份是mycc的編譯產物,而mycc生成的代碼質量要遠好於gcc的)。故事雖然是虛構的,但是道理差不多就是這么個道理。這也就是為什麼如果從源碼編譯安裝新版本的gcc的話,往往會「編譯——安裝」兩到三遍的原因。

㈢ 計算機編程語言必須能夠自舉嗎

不明白自舉是什麼意思, 是自己實現自己嗎?
如果是這個那麼絕大多數都可以.因為他們的根都在操作系統依賴標準的操作系統庫.
不管是編譯型的還是解釋型的都毫無問題.

java中的自舉類,是什麼意思

java編譯器編譯java編譯器。一開始c++編譯第一代的java編譯器。之後每一代的java編譯器 編譯後一代的java 編譯器。1.0編譯2.0;不需要其他c或c++.

㈤ 自己寫編譯器怎麼寫,我想為中國程序員做個編譯C語言的編譯器。

首先做這個東西的意義並不大,如果是想學習的話,看看這本書Modern Compiler by Andrew W. Appel

㈥ 匯編語言編譯器是怎麼編寫的

編譯器自舉!搜索這個關鍵字
程序都是編譯器編譯的。這個是肯定的
至於第一款X語言編譯器是不是直接1010101010自己寫的那就不知道啦

一般開發編譯器的話。有兩條路選擇
1.利用yacc(或者其變種)&lex(詞法分析)-等工具自己生成語法模板
詞法語法都可以使用這些工具自己生成
然後自己編寫生成的中間碼和生成的機器碼就可以了
一般做編譯原理類似試驗都是如此的。許多編譯器也的確是這樣

2.自己寫詞法分析和語法分析。可以參考一些開源的編譯器
lcc-這個是ANSI C99標準的編譯器是開源的
或者nasm,watcom等編譯器到www.sf.net上不少開源的編譯器

總的來說。高級語言編譯器比較難寫
如果想快速寫出一個的話
可以採用第一種做法。利用工具生成語法詞法模板
先寫一個簡單的匯編編譯器比較簡單
開源的有nasm,jwasm(支持masm語法開源的編譯器)
http://www.japheth.de/JWasm.html
fasm(這款編譯器是自舉的.就是自己可以編譯自己),
http://flatassembler.net/

剩下的就是自己做好語言規則關鍵字map
引用高手的話。語言map做好了你的編譯器也做好一半了
剩下的都是機械性的工作了。
生成x86或者arm指令。

優化工作這個很難解釋.根據你所需要的做吧
畢竟可以做出一個無錯,又XX的編譯器已經很難得

你可以選擇使用現有的編譯器開發自己的編譯器
然後等到你的編譯器支持相當數量指令和成熟度的時候
使用自己的語法重新寫一遍編譯器.
這樣你就可以用自己的編譯器開發自己的編譯器了(是不是很邪惡?)

另外舉幾個例子
Delphi的編譯器是C++ Builder開發的。
而C++ Builder的IDE是Delphi開發的
C++ Builder的編譯器是C++ Builder開發的-這個就是編譯器自舉了。。Delphi和C++ Builder共享一個後端化優化器。
Delphi 早期的版本的編譯器是tasm直接編譯的。可見Anders的匯編功力多強悍(Anders也就是後來VJ++,C#,.NET工程的核心架構師.最關鍵的靈魂級人物)

VC++的編譯器是VC++開發的。很明顯這都說明了編譯器自舉
自己開發自己。如果一個編譯器可以做到自己編譯自己。那基本上就可以實現任何功能了。

關於編譯器開發的書籍可以看一下
龍書《編譯原理(第二版)》
虎書《現代編譯原理-C語言描述》
鯨書《高級編譯器設計與實現》
建議從鯨書看起。然後是龍書
再來是虎書--虎書裡面描述了許多現代編譯器(正如其名)技術
例如面向對象啦,優化,垃圾回收等等.
鯨書看完基本上就可以實現一個簡單的Tiny C編譯器了
然後在龍書鞏固,讀一下語言規范,自己看一些開源的匯編編譯器代碼
自己就可以嘗試做一個匯編語言編譯器了.等到技術提高了
在嘗試做一些高級語法識別,參考LCC代碼做一下ANSI C99的
C語言編譯器。再來就看你自己的興趣和領悟度拉
如果想支持C++的話就得要對編譯器做許多方便的研究

類似Java那種跨平台或者Ruby,Python等動態語言
虎書中也有描述。當然看自己功力了

㈦ 編譯器的自舉原理是什麼

編譯器的所有自舉原理主要是和代碼和優化有關,運行庫是C++語言寫的,產生的目標代碼肯定是會與運行平台一致的,如果不一致,也沒辦法進行自舉。

㈧ 什麼是自舉開發能力什麼樣的系統才具有自舉開發能力

以下全是個人理解:
在當前開發環境的基礎上開發更好的開發環境的能力被稱為自舉開發能力。
用C語言來開發C編譯器的過程就是自舉開發過程。這一過程可能是這樣的:機器語言編寫匯編編譯器,用匯編編寫一個簡單的C編譯器,然後用C編寫一個更好的C編譯器,同時也可以用C編譯一個更好的匯編編譯器,而且新的編譯器還可以重新編譯原來的C編譯器……
個人認為具備了圖靈完備性的系統都具有自舉開發能力。但是受硬體局限性,自舉能力可能受到限制,並且根據需求或許這一能力並不必要……
比如說我聽說有個牛人用74系列門電路集成晶元、八段碼液晶顯示、開關搭建了一個單片機開發環境,然後用它開發一個用單片機實現的單片機開發環境(所有的程序都是用開關按進去的),後來他在准備給這個開發環境添加LCD支持的時候,他終於有了一台屬於自己的計算機,這時候,他就不再需要將他的單片機開發環境繼續自舉下去了……因為他已經擁有了足夠滿足要求的計算機和相應軟體……

㈨ C語言是用什麼編寫出來的

C語言通過語言開發出來的。

C語言是Dennis Ritchie 在1972年通過Thompson的B語言的基礎之上開發出來的。C是作為從事實際編程工作的程序的一種工具而出現的,所以其主要目標是成為一種有用的語言。同時, C 也是為編程人員開發的語言,這使得它成為當今人們首先的編程語言之一。

C已經成為最重要和流行的編程語言之一。它之所以得到發展,是因為人們嘗試使用它後喜歡它。過去10年中,許多人從C轉而使用更強大的C++語言,但C有其自身的優勢,仍然是一種重要的語言,而且它還是通往C++的必由之路。

(9)自編譯就是自舉嗎擴展閱讀

C語言特點

1、設計特性:C是一種融合了控制特性的現代語言,而我們已發現在計算機科學的理論和實踐中,控制特性是很重要的。

2、高效性: C是一種高效的語言。 在設計上它充分利用了當前計算機在能力上的優點。C程序往往很緊湊且運行速度快。

3、可移植性:C是一種可移植語言。在一個系統上編寫的C程序經過很少改動或不經修改就可以其他系統上運行。

㈩ 請問學x86匯編語言用什麼編譯器

編譯器自舉!搜索這個關鍵字
程序都是編譯器編譯的。這個是肯定的
至於第一款X語言編譯器是不是直接1010101010自己寫的那就不知道啦

一般開發編譯器的話。有兩條路選擇
1.利用yacc(或者其變種)&lex(詞法分析)-等工具自己生成語法模板
詞法語法都可以使用這些工具自己生成
然後自己編寫生成的中間碼和生成的機器碼就可以了
一般做編譯原理類似試驗都是如此的。許多編譯器也的確是這樣

2.自己寫詞法分析和語法分析。可以參考一些開源的編譯器
lcc-這個是ANSI C99標準的編譯器是開源的
或者nasm,watcom等編譯器到上不少開源的編譯器

總的來說。高級語言編譯器比較難寫
如果想快速寫出一個的話
可以採用第一種做法。利用工具生成語法詞法模板
先寫一個簡單的匯編編譯器比較簡單
開源的有nasm,jwasm(支持masm語法開源的編譯器)

fasm(這款編譯器是自舉的.就是自己可以編譯自己),

剩下的就是自己做好語言規則關鍵字map
引用高手的話。語言map做好了你的編譯器也做好一半了
剩下的都是機械性的工作了。
生成x86或者arm指令。

優化工作這個很難解釋.根據你所需要的做吧
畢竟可以做出一個無錯,又XX的編譯器已經很難得

你可以選擇使用現有的編譯器開發自己的編譯器
然後等到你的編譯器支持相當數量指令和成熟度的時候
使用自己的語法重新寫一遍編譯器.
這樣你就可以用自己的編譯器開發自己的編譯器了(是不是很邪惡?)

另外舉幾個例子
Delphi的編譯器是C++ Builder開發的。
而C++ Builder的IDE是Delphi開發的
C++ Builder的編譯器是C++ Builder開發的-這個就是編譯器自舉了。。Delphi和C++ Builder共享一個後端化優化器。
Delphi 早期的版本的編譯器是tasm直接編譯的。可見Anders的匯編功力多強悍(Anders也就是後來VJ++,C#,.NET工程的核心架構師.最關鍵的靈魂級人物)

VC++的編譯器是VC++開發的。很明顯這都說明了編譯器自舉
自己開發自己。如果一個編譯器可以做到自己編譯自己。那基本上就可以實現任何功能了。

關於編譯器開發的書籍可以看一下
龍書《編譯原理(第二版)》
虎書《現代編譯原理-C語言描述》
鯨書《高級編譯器設計與實現》
建議從鯨書看起。然後是龍書
再來是虎書--虎書裡面描述了許多現代編譯器(正如其名)技術
例如面向對象啦,優化,垃圾回收等等.
鯨書看完基本上就可以實現一個簡單的Tiny C編譯器了
然後在龍書鞏固,讀一下語言規范,自己看一些開源的匯編編譯器代碼
自己就可以嘗試做一個匯編語言編譯器了.等到技術提高了
在嘗試做一些高級語法識別,參考LCC代碼做一下ANSI C99的
C語言編譯器。再來就看你自己的興趣和領悟度拉
如果想支持C++的話就得要對編譯器做許多方便的研究

類似Java那種跨平台或者Ruby,Python等動態語言
虎書中也有描述。當然看自己功力了

熱點內容
手機優酷緩存視頻格式 發布:2025-05-15 04:13:45 瀏覽:208
公益電影分鏡頭腳本插畫 發布:2025-05-15 04:08:37 瀏覽:959
數據壓縮編碼 發布:2025-05-15 03:58:44 瀏覽:725
java字元為空 發布:2025-05-15 03:57:11 瀏覽:546
速訊安卓哪裡下載 發布:2025-05-15 03:55:02 瀏覽:48
緩存區數據讀寫原理 發布:2025-05-15 03:39:57 瀏覽:585
編譯器生成的是二進制文件嗎 發布:2025-05-15 03:38:42 瀏覽:955
運營為什麼區分ios和安卓 發布:2025-05-15 03:30:02 瀏覽:630
主播網站源碼 發布:2025-05-15 02:50:56 瀏覽:168
中文編程語言有哪些 發布:2025-05-15 02:48:59 瀏覽:536