最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

震驚!你知道編程語(yǔ)言之祖 C 語(yǔ) 言,自身是用什么語(yǔ)言寫的嗎?

2022-04-02 19:54 作者:甬上逍遙子  | 我要投稿

C語(yǔ)言在運(yùn)行之前得編譯才行,C語(yǔ)言額編譯器從哪里來(lái)?

機(jī)器語(yǔ)言可以直接被CPU執(zhí)行,不需要編譯器。

匯編語(yǔ)言只是機(jī)器語(yǔ)言的助記符,但它依舊需要編譯成機(jī)器語(yǔ)言才能執(zhí)行。

所以只能用機(jī)器語(yǔ)言來(lái)寫第一個(gè)編譯器,以后就不用了。

用匯編語(yǔ)言去寫C語(yǔ)言的編譯器,然后可以編譯任意的C語(yǔ)言程序了。然后用C語(yǔ)言本身寫一個(gè)編譯器,接下來(lái)就可以把用匯編寫的C語(yǔ)言編譯器拋棄了。

如果C語(yǔ)言之前已經(jīng)出些了別的高級(jí)語(yǔ)言,比如pascal,然后就可以用pascal來(lái)寫一個(gè)C語(yǔ)言額編譯器了。

第一個(gè)Pascal的編譯器據(jù)說(shuō)使用fortan寫的。第一個(gè)高級(jí)語(yǔ)言的Fortan的編譯器應(yīng)該是匯編語(yǔ)言寫的。

在開發(fā)第一代unix的時(shí)候,連C語(yǔ)言都沒有KenThompson和DennisRitchie可是用匯編一行行把Unix敲出來(lái)的。

WPS第一版是求伯君用匯編寫出來(lái)的。

Turbo Pascal的編譯器也是Anders用匯編寫出來(lái)的、

對(duì)于編譯器,還可用“滾雪球”的方式來(lái)開發(fā):

以C語(yǔ)言為例,第一個(gè)版本可以先選擇C語(yǔ)言的一個(gè)子集,例如只支持基本的數(shù)據(jù)類型,流程控制語(yǔ),句函數(shù)調(diào)用.......我們把這個(gè)子集稱為C0,然后用匯編語(yǔ)言寫個(gè)編譯器。只搞定這個(gè)語(yǔ)言的子集C0,這樣寫起來(lái)就容易不少了。C0這個(gè)子集可以工作了,然后我們擴(kuò)展這個(gè)子集,例如添加struct指針......把新的語(yǔ)言稱為C1,那C1這個(gè)語(yǔ)言的編譯器由誰(shuí)來(lái)寫呢?自然是C0,等到C1可以工作了,再次擴(kuò)展語(yǔ)言特性,用C1寫編譯器,得到C2,然后是C3,C4.......最后得到完整的C語(yǔ)言,這個(gè)過(guò)程被稱為bootstraping,中文叫做自舉。





















震驚!你知道編程語(yǔ)言之祖 C 語(yǔ) 言,自身是用什么語(yǔ)言寫的嗎?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
石屏县| 平湖市| 牟定县| 濮阳市| 凉山| 恩施市| 竹溪县| 石渠县| 阿勒泰市| 茶陵县| 汉寿县| 阳江市| 五指山市| 遂平县| 无棣县| 郸城县| 枝江市| 项城市| 茶陵县| 车致| 山阳县| 雷山县| 库车县| 奈曼旗| 布尔津县| 乌拉特前旗| 九江县| 长泰县| 广丰县| 龙口市| 威海市| 张北县| 江安县| 洞头县| 响水县| 包头市| 潼南县| 河北省| 新田县| 北川| 富民县|