當前位置:首頁 » 編程軟體 » 早期編譯器是如何開發的

早期編譯器是如何開發的

發布時間: 2022-12-27 19:46:52

『壹』 編譯技術的發展歷程

1954年至1957年間,IBM的John Backus帶領一個小組開發FORTRAN語言及其編譯器,使得上面的擔憂不必要了。
但由於當時處理中所涉及到的大多數程序設計語言的翻譯並不為人所掌握,所以這個項目的成功也伴隨著巨大的辛勞。
幾乎與此同時,人們也在開發著第一個編譯器,Noam Chomsky開始自然語言結構的研究。使得編譯器結構異常簡單,甚至還帶有了一些自動化。
Chomsky的研究導致了根據語言文法(grammar,結構規則)的難易程度以及識別它們所需的演算法來為語言分類。文法有4個層次:0型、1型、2型和3型文法,且其中的每一個都是其前者的專門化。2型(或上下文無關文法context-free grammar)是程序設計語言中最有用的,代表著程序設計語言結構的標准方式。
人們接著又深化了生成有效的目標代碼的方法,這就是最初的編譯器,它們被一直使用至今。人們通常將其誤稱為優化技術(optimization technique),但因其從未真正地得到過被優化了的目標代碼而僅僅改進了它的有效性,因此實際上應稱作代碼改進技術(code improvement technique)。
在70年代後期和80年代早期,大量的項目都關注於編譯器其他部分的生成自動化,這其中就包括了代碼生成。這些嘗試並未取得多少成功,這大概是因為操作太復雜而人們又對其不甚了解。

『貳』 編譯器一般由哪種語言開發

其實我在想為什麼匯編語言生成一個簡單的編譯器後,可以用新生成的編譯器再次生成編譯器,例如,C語言開發C的編譯器呢?
這是一個遞歸的思想,舉個例子一看就明白了
用一個大的模具可以生成一個A模具,A模具可以做出來B模具,依次往下推,最終這個小模具可以做出來小盒子用來裝東西。
第一個大模具肯定是手工做出來的第一個模具,但是有了這個大模具後,後面就可以用他自動的生成更多的模具,後面的各種模具加起來又可以造出來更精緻的模具,
所以,自動第一個大模具造出來模具的時候,大模具就可以被拋棄了。
我們都知道編譯程序通常分為下面五個階段:
1)詞法分析
2)語法分析
3)語義分析與中間代碼產生
4)優化
5)目標代碼生成
當然最難的一點就是目標代碼的生成,這一階段實現了最終的翻譯,就是真正把原碼翻譯成可以被CPU直接計算的機器碼(NativeCode)。

『叄』 計算機語言是如何開發出來的

計算機語言是「設計」出來的,設計只需要思考和寫文檔,而該語言的編譯器才是「開發」出來的。編譯器也是程序,所以也需要用編程語言來編寫,至於用什麼語言就隨開發者的便了。很多編程語言是用別的更基礎的語言開發的,其中用最多的就是C語言。C語言編譯器很多,大部分都是用別的C語言編譯器編譯出來的,而最早的C語言編譯器是用匯編語言寫出來的,最早的匯編語言編譯器是通過「編譯器自舉」開發出來的。
相關回答
一個很深奧的問題
一、新建項目 啟動Microsoft Visual Studio 。NET,新建一個C#項目MyApp,本例工程存放於F:\Csharp\MyApp。 二、添加控制項 在Form1 窗體上添加三個控制項(見圖1):主菜單MainMenu、標簽Label1和按鈕Button1。
Label1和Button1控制項的屬性均採用預設設置。MainMenu控制項中添加三個菜單項menuItem1、menuItem2、menuItem3。Text屬性分別設為「語言」、「中文」和「English」。
menuItem2、 menuItem3 的RadioCheck屬性設為True。 圖 1 三、創建配置文件 在項目中添加一個文本文件 i,保存當前程序的語言版本設置。該文件中只有一行內容。
如果是「English」,則表示程序為英文版;如果是「Chinese」則為中文版。這里暫且保存為「English」。 四、創建資源文件 。NET中的資源文件有三種: 文本(。txt )文件、XML 格式的。

『肆』 最早的編程軟體是怎麼來的

最早的沒有現在意義上的編譯器,是靠打孔器打紙帶編程。大型機靠讀紙帶執行程序。

由於機器語言由0、1組成,難以閱讀。所以在機器語言的基礎上開發了匯編語言。最早的匯編語言編譯器應該是機器語言編寫的。一旦第一個匯編語言編譯器開發出來以後,以後的版本都可以用匯編語言來編寫了。

由於匯編語言還是很難使用,所以開發出高級語言。也可以預見,第一個高級語言編譯器是由匯編語言編寫的。有了第一個高級語言編譯器,以後的高級語言編譯器便可以用這個高級語言編譯器生成。

也就是說,現在我們使用的C++語言編譯器,可以用C++語言來編寫。

『伍』 編譯原理的發展歷程


在20世紀40年代,由於馮·諾伊曼在存儲-程序計算機方面的先鋒作用,編寫一串代碼或程序已成必要,這樣計算機就可以執行所需的計算。開始時,這些程序都是用機器語言 (machine language )編寫的。機器語言就是表示機器實際操作的數字代碼,例如:
C7 06 0000 0002 表示在IBM PC 上使用的Intel 8x86處理器將數字2移至地址0 0 0 0 (16進制)的指令。
但編寫這樣的代碼是十分費時和乏味的,這種代碼形式很快就被匯編語言(assembly language )代替了。在匯編語言中,都是以符號形式給出指令和存儲地址的。例如,匯編語言指令 MOV X,2 就與前面的機器指令等價(假設符號存儲地址X是0 0 0 0 )。匯編程序(assembler )將匯編語言的符號代碼和存儲地址翻譯成與機器語言相對應的數字代碼。
匯編語言大大提高了編程的速度和准確度,人們至今仍在使用著它,在編碼需要極快的速度和極高的簡潔程度時尤為如此。但是,匯編語言也有許多缺點:編寫起來也不容易,閱讀和理解很難;而且匯編語言的編寫嚴格依賴於特定的機器,所以為一台計算機編寫的代碼在應用於另一台計算機時必須完全重寫。
發展編程技術的下一個重要步驟就是以一個更類似於數學定義或自然語言的簡潔形式來編寫程序的操作,它應與任何機器都無關,而且也可由一個程序翻譯為可執行的代碼。例如,前面的匯編語言代碼可以寫成一個簡潔的與機器無關的形式 x = 2。
在1954年至1957年期間,IBM的John Backus帶領的一個研究小組對FORTRAN語言及其編譯器的開發,使得上面的擔憂不必要了。但是,由於當時處理中所涉及到的大多數程序設計語言的翻譯並不為人所掌握,所以這個項目的成功也伴隨著巨大的辛勞。幾乎與此同時,人們也在開發著第一個編譯器, Noam Chomsky開始了他的自然語言結構的研究。他的發現最終使得編譯器結構異常簡單,甚至還帶有了一些自動化。Chomsky的研究導致了根據語言文法(grammar ,指定其結構的規則)的難易程度以及識別它們所需的演算法來為語言分類。正如現在所稱的-與喬姆斯基分類結構(Chomsky hierarchy )一樣-包括了文法的4個層次:0型、1型、2型和3型文法,且其中的每一個都是其前者的專門化。2型(或上下文無關文法(context-free grammar ))被證明是程序設計語言中最有用的,而且今天它已代表著程序設計語言結構的標准方式。
分析問題( parsing problem ,用於限定上下文無關語言的識別的有效演算法)的研究是在20世紀60年代和70年代,它相當完善地解決了這一問題, 現在它已是編譯理論的一個標准部分。它們與喬姆斯基的3型文法相對應。對它們的研究與喬姆斯基的研究幾乎同時開始,並且引出了表示程序設計語言的單詞(或稱為記號)的符號方式。
人們接著又深化了生成有效的目標代碼的方法,這就是最初的編譯器,它們被一直使用至今。人們通常將其誤稱為優化技術(optimization technique ),但因其從未真正地得到過被優化了的目標代碼而僅僅改進了它的有效性,因此實際上應稱作代碼改進技術(code improvement technique )。
這些程序最初被稱為編譯程序-編譯器,但更確切地應稱為分析程序生成器 (parser generator ),這是因為它們僅僅能夠自動處理編譯的一部分。這些程序中最著名的是 Yacc (yet another compiler- compiler),它是由Steve Johnson在1975年為Unix系統編寫的。
類似地,有窮自動機的研究也發展了另一種稱為掃描程序生成器 (scanner generator )的工具,Lex (與Yacc同時,由Mike Lesk為Unix系統開發的)是這其中的佼佼者。在20世紀70年代後期和80年代早期,大量的項目都關注於編譯器其他部分的生成自動化,這其中就包括代碼生成。這些嘗試並未取得多少成功,這大概是因為操作太復雜而人們又對其不甚了解。
編譯器設計最近的發展包括:首先,編譯器包括了更為復雜的演算法的應用程序,它用於推斷或簡化程序中的信息;這又與更為復雜的程序設計語言(可允許此類分析)的發展結合在一起。其中典型的有用於函數語言編譯的Hindle y - Milner類型檢查的統一演算法。
其次,編譯器已越來越成為基於窗口的交互開發環境(interactive development environment,IDE )的一部 分,它包括了編輯器、鏈接程序、調試程序以及項目管理程序。這樣的IDE的標准並沒有多少, 但是已沿著這一方向對標準的窗口環境進行開發了。

『陸』 第一個編譯器是靠什麼編出來的

程序並不是一定需要進行編譯才能運行的。可以直接對硬體通過指令集進行操作。
只是這種方法非常耗費時間,不易維護,對於普通開發人員提高了門檻。所以在此基礎上,提供了一個「翻譯」軟體,將編程語言翻譯成指令集。能夠通過更加貼近人類語言的方式操作硬體。

『柒』 請問,編譯軟體最早是由誰發明出來的

Grave of Grace

後記

Grace Hopper是個非常amazing的人 (常被稱為Amazing Grace),崇拜她的人相當多。雖然她的事跡很多,但是還有很多有類似事跡的人並沒有像她這樣受到眾人的崇拜。由其中一點我們可以看出來:從1947年開始 (二戰結束後第二年),她獲得了第一個榮譽博士學位 (賓州大學),從那以後,她先後被40多所大學授予榮譽博士學位,其中包括芝加哥大學、華盛頓大學、馬里蘭大學等知名學府。各種婦女社會團體和學術組織都曾授予Grace各種稱號和獎勵。1991年,布希總統在白宮授予她的「美國國家技術獎」 (National Medal of Technology) 是其中的最高獎項,她也是至今惟一獲此殊榮的美國女性。她的名言有很多,她自己最喜歡的,也是她最喜歡對所謂的「年輕人」說的 (在她年老時,她所謂的年輕人就是「年齡不到我的一半的人就叫做年輕人」),這句話是:

「A ship in port is safe, but that is not what ships are built for.」

語錄

下面Grace的語錄中有幾句比較有意思的話。

  • From then on, when anything went wrong with a computer, we said it had bugs in it.

  • The most dangerous phrase in the language is, 「We』ve always done it this way.」

  • Humans are allergic to change. They love to say, 「We』ve always done it this way.」 I try to fight that. That』s why I have a clock on my wall that runs counter-clockwise.

  • Leadership is a two-way street, loyalty up and loyalty down. Respect for one』s superiors; care for one』s crew.

  • One accurate measurement is worth a thousand expert opinions.

  • Someday, on the corporate balance sheet, there will be an entry which reads, 「Information」; For in most cases, the information is more valuable than the hardware which processes it.

  • We』re flooding people with information. We need to feed it through a processor. A human must turn information into intelligence or knowledge. We』ve tended to forget that no computer will ever ask a new question.

  • To me programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge.

  • They told me computers could only do arithmetic.

  • In pioneer days they used oxen for heavy pulling, and when one ox couldn』t budge a log, they didn』t try to grow a larger ox. We shouldn』t be trying for bigger computers, but for more systems of computers.

  • Life was simple before World War II. After that, we had systems.

  • We went overboard on management and forgot about leadership. It might help if we ran the MBAs out of Washington.

  • At any given moment, there is always a line representing what your boss will believe. If you step over it, you will not get your budget. Go as close to that line as you can.

  • I seem to do a lot of retiring.

  • I handed my passport to the immigration officer, and he looked at it and looked at me and said, 「What are you?」

  • 參考

    維基網路:
    http://en.wikipedia.org/wiki/Grace_Hopper

    國立中央大學數學系:
    http://li.math.ncu.e.tw/bcc16/pool/3.06.shtml

    耶魯大學計算機系:
    http://cs-www.cs.yale.e/homes/tap/Files/hopper-story.html

    計算機先驅:
    http://202.207.0.245:9001/jisuanjifazhanshi/xianqu/18.htm

    This entry was posted in網路3Cand taggedcompiler,debug,Grace Murray Hopper,傳記,發明,編譯器,起源. Bookmark thepermalink.Post a commentor leave a trackback:Trackback URL.

『捌』 最早的C語言編譯器是什麼做的

匯編。這真的是最早最早的。

准確的來說,這和編譯器的開發有關,不用說太細,很麻煩怕你不懂。你現在假設第一個編譯器是用會變寫出來的,它的功能很簡單,就是解釋簡單一種類似於C語言的高級語言,但是這種所謂的高級語言還沒有完全擁有C語言的所有特性。只有比較簡單核心功能,比如能把文本文件的高級語言轉換成機器代碼並且執行。

有了這個原型之後,就可以用這個編譯器來解釋簡單C程序,就可以用C重寫編寫一個新的編譯器,這樣就有更多的C的功能。於是,從此之後就用現有的編譯器解釋更復雜的語言,用更復雜的語言寫出更好的編譯器,然後不斷這樣迭代。這確實是編譯器的演變。

然後最後一個問題就是當一個新的CPU發明過後,怎麼辦,需要重寫又從匯編開始寫編譯器嗎?答案是不用。假設你有一個CPU A執行一些代碼,你用匯編寫了一個基礎的C編譯器,然後用C寫出了更復雜的編譯器,接受更復雜的C功能,然後不斷循環演化。現在你有了CPU B,CPU B和CPU A執行兩套完全不同的代碼,那如何讓CPU B的機器也可以變異C語言呢?因為現在A上面已經可以運行非常復雜的C語言程序了,所以你可以在A上面開發一個編譯器把C語言程序轉化為CPU B的執行代碼。然後用這個程序,直接編譯你的C語言編譯器,再把這個程序轉換到有B命令集的電腦上面,這樣你就開發出了B電腦需要的C語言編譯器。

所以除非你真的是活在非常早起的人類。否在現在的編譯器基本上都利用這種原理直接編譯已經用C語言或者其它高級語言寫好的代碼來產生新的編譯器就行了。理論上可以只使用C語言來開發C的編譯器,不過處於一些歷史原因和底層效率等因素的考量,部分代碼還是使用匯編來實現的。

我舉得不過是一個例子,不一定是真實的C語言編譯的進化,何況有這么多不同的C語言編譯器,每一個的發展歷史都有小的不同。但是基本上都是利用了這種編譯器編譯新的編譯器的思想來實現了。而這樣回溯回去,最早的編譯器只能使用匯編來些。而其實最早的匯編語言的編譯器就只能使用機器語言來寫了。不過都是先處理簡單的轉換任務,有了這個核心功能過後,就可以寫程序轉換更復雜的語法。然後越來越復雜。就有了各種各樣的高級語言編譯器了。

『玖』 編譯器開發的四種技術

編譯程序的開發常常採用這四種:自編譯、交叉編譯、自展和移植等技術實現。

『拾』 編譯器的發展史

編譯器
編譯器,是將便於人編寫,閱讀,維護的高級計算機語言翻譯為計算機能識別,運行的低級機器語言的程序。編譯器將源程序(Source program)作為輸入,翻譯產生使用目標語言(Target language)的等價程序。源程序一般為高級語言(High-level language),如Pascal,C++等,而目標語言則是匯編語言或目標機器的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

一個現代編譯器的主要工作流程如下:

源程序(source code)→預處理器(preprocessor)→編譯器(compiler)→匯編程序(assembler)→目標程序(object code)→連接器(鏈接器,Linker)→可執行程序(executables)
目錄 [隱藏]
1 工作原理
2 編譯器種類
3 預處理器(preprocessor)
4 編譯器前端(frontend)
5 編譯器後端(backend)
6 編譯語言與解釋語言對比
7 歷史
8 參見

工作原理
翻譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器言)。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。

典型的編譯器輸出是由包含入口點的名字和地址以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的可執行程序。

編譯器種類
編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平台)相同的環境下運行的目標代碼,這種編譯器又叫做「本地」編譯器。另外,編譯器也可以生成用來在其它平台上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬體平台時非常有用。「源碼到源碼編譯器」是指用一種高級語言作為輸入,輸出也是高級語言的編譯器。例如: 自動並行化編譯器經常採用一種高級語言作為輸入,轉換其中的代碼,並用並行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRAN的DOALL指令)。

預處理器(preprocessor)
作用是通過代入預定義等程序段將源程序補充完整。

編譯器前端(frontend)
前端主要負責解析(parse)輸入的源程序,由詞法分析器和語法分析器協同工作。詞法分析器負責把源程序中的『單詞』(Token)找出來,語法分析器把這些分散的單詞按預先定義好的語法組裝成有意義的表達式,語句 ,函數等等。 例如「a = b + c;」前端詞法分析器看到的是「a, =, b , +, c;」,語法分析器按定義的語法,先把他們組裝成表達式「b + c」,再組裝成「a = b + c」的語句。 前端還負責語義(semantic checking)的檢查,例如檢測參與運算的變數是否是同一類型的,簡單的錯誤處理。最終的結果常常是一個抽象的語法樹(abstract syntax tree,或 AST),這樣後端可以在此基礎上進一步優化,處理。

編譯器後端(backend)
編譯器後端主要負責分析,優化中間代碼(Intermediate representation)以及生成機器代碼(Code Generation)。

一般說來所有的編譯器分析,優化,變型都可以分成兩大類: 函數內(intraproceral)還是函數之間(interproceral)進行。很明顯,函數間的分析,優化更准確,但需要更長的時間來完成。

編譯器分析(compiler analysis)的對象是前端生成並傳遞過來的中間代碼,現代的優化型編譯器(optimizing compiler)常常用好幾種層次的中間代碼來表示程序,高層的中間代碼(high level IR)接近輸入的源程序的格式,與輸入語言相關(language dependent),包含更多的全局性的信息,和源程序的結構;中層的中間代碼(middle level IR)與輸入語言無關,低層的中間代碼(Low level IR)與機器語言類似。 不同的分析,優化發生在最適合的那一層中間代碼上。

常見的編譯分析有函數調用樹(call tree),控制流程圖(Control flow graph),以及在此基礎上的 變數定義-使用,使用-定義鏈(define-use/use-define or u-d/d-u chain),變數別名分析(alias analysis),指針分析(pointer analysis),數據依賴分析(data dependence analysis)等等。

上述的程序分析結果是編譯器優化(compiler optimization)和程序變形(compiler transformation)的前提條件。常見的優化和變新有:函數內嵌(inlining),無用代碼刪除(Dead code elimination),標准化循環結構(loop normalization),循環體展開(loop unrolling),循環體合並,分裂(loop fusion,loop fission),數組填充(array padding),等等。 優化和變形的目的是減少代碼的長度,提高內存(memory),緩存(cache)的使用率,減少讀寫磁碟,訪問網路數據的頻率。更高級的優化甚至可以把序列化的代碼(serial code)變成並行運算,多線程的代碼(parallelized,multi-threaded code)。

機器代碼的生成是優化變型後的中間代碼轉換成機器指令的過程。現代編譯器主要採用生成匯編代碼(assembly code)的策略,而不直接生成二進制的目標代碼(binary object code)。即使在代碼生成階段,高級編譯器仍然要做很多分析,優化,變形的工作。例如如何分配寄存器(register allocatioin),如何選擇合適的機器指令(instruction selection),如何合並幾句代碼成一句等等。

編譯語言與解釋語言對比
許多人將高級程序語言分為兩類: 編譯型語言 和 解釋型語言 。然而,實際上,這些語言中的大多數既可用編譯型實現也可用解釋型實現,分類實際上反映的是那種語言常見的實現方式。(但是,某些解釋型語言,很難用編譯型實現。比如那些允許 在線代碼更改 的解釋型語言。)

歷史
上世紀50年代,IBM的John Backus帶領一個研究小組對FORTRAN語言及其編譯器進行開發。但由於當時人們對編譯理論了解不多,開發工作變得既復雜又艱苦。與此同時,Noam Chomsky開始了他對自然語言結構的研究。他的發現最終使得編譯器的結構異常簡單,甚至還帶有了一些自動化。Chomsky的研究導致了根據語言文法的難易程度以及識別它們所需要的演算法來對語言分類。正如現在所稱的Chomsky架構(Chomsky Hierarchy),它包括了文法的四個層次:0型文法、1型文法、2型文法和3型文法,且其中的每一個都是其前者的特殊情況。2型文法(或上下文無關文法)被證明是程序設計語言中最有用的,而且今天它已代表著程序設計語言結構的標准方式。分析問題(parsing problem,用於上下文無關文法識別的有效演算法)的研究是在60年代和70年代,它相當完善的解決了這個問題。現在它已是編譯原理中的一個標准部分。

有限狀態自動機(Finite Automaton)和正則表達式(Regular Expression)同上下文無關文法緊密相關,它們與Chomsky的3型文法相對應。對它們的研究與Chomsky的研究幾乎同時開始,並且引出了表示程序設計語言的單詞的符號方式。

人們接著又深化了生成有效目標代碼的方法,這就是最初的編譯器,它們被一直使用至今。人們通常將其稱為優化技術(Optimization Technique),但因其從未真正地得到過被優化了的目標代碼而僅僅改進了它的有效性,因此實際上應稱作代碼改進技術(Code Improvement Technique)。

當分析問題變得好懂起來時,人們就在開發程序上花費了很大的功夫來研究這一部分的編譯器自動構造。這些程序最初被稱為編譯器的編譯器(Compiler-compiler),但更確切地應稱為分析程序生成器(Parser Generator),這是因為它們僅僅能夠自動處理編譯的一部分。這些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年為Unix系統編寫的。類似的,有限狀態自動機的研究也發展了一種稱為掃描程序生成器(Scanner Generator)的工具,Lex(與Yacc同時,由Mike Lesk為Unix系統開發)是這其中的佼佼者。

在70年代後期和80年代早期,大量的項目都貫注於編譯器其它部分的生成自動化,這其中就包括了代碼生成。這些嘗試並未取得多少成功,這大概是因為操作太復雜而人們又對其不甚了解。

編譯器設計最近的發展包括:首先,編譯器包括了更加復雜演算法的應用程序它用於推斷或簡化程序中的信息;這又與更為復雜的程序設計語言的發展結合在一起。其中典型的有用於函數語言編譯的Hindley-Milner類型檢查的統一演算法。其次,編譯器已越來越成為基於窗口的交互開發環境(Interactive Development Environment,IDE)的一部分,它包括了編輯器、連接程序、調試程序以及項目管理程序。這樣的IDE標准並沒有多少,但是對標準的窗口環境進行開發已成為方向。另一方面,盡管近年來在編譯原理領域進行了大量的研究,但是基本的編譯器設計原理在近20年中都沒有多大的改變,它現在正迅速地成為計算機科學課程中的中心環節。

在九十年代,作為GNU項目或其它開放源代碼項目的一部分,許多免費編譯器和編譯器開發工具被開發出來。這些工具可用來編譯所有的計算機程序語言。它們中的一些項目被認為是高質量的,而且對現代編譯理論感性趣的人可以很容易的得到它們的免費源代碼。

大約在1999年,SGI公布了他們的一個工業化的並行化優化編譯器Pro64的源代碼,後被全世界多個編譯器研究小組用來做研究平台,並命名為Open64。Open64的設計結構好,分析優化全面,是編譯器高級研究的理想平台。

編譯器是一種特殊的程序,它可以把以特定編程語言寫成的程序變為機器可以運行的機器碼。我們把一個程序寫好,這時我們利用的環境是文本編輯器。這時我程序把程序稱為源程序。在此以後程序員可以運行相應的編譯器,通過指定需要編譯的文件的名稱就可以把相應的源文件(通過一個復雜的過程)轉化為機器碼了。

編譯器工作方法
首先編譯器進行語法分析,也就是要把那些字元串分離出來。然後進行語義分析,就是把各個由語法分析分析出的語法單元的意義搞清楚。最後生成的是目標文件,我們也稱為obj文件。再經過鏈接器的鏈接就可以生成最後的可執行代碼了。有些時候我們需要把多個文件產生的目標文件進行鏈接,產生最後的代碼。我們把一過程稱為交叉鏈接。

熱點內容
php辦公系統 發布:2025-07-19 03:06:35 瀏覽:900
奧德賽買什麼配置出去改裝 發布:2025-07-19 02:53:18 瀏覽:42
請與網路管理員聯系請求訪問許可權 發布:2025-07-19 02:37:34 瀏覽:189
ipad上b站緩存視頻怎麼下載 發布:2025-07-19 02:32:17 瀏覽:844
phpcgi與phpfpm 發布:2025-07-19 02:05:19 瀏覽:527
捷達方向機安全登錄密碼是多少 發布:2025-07-19 00:57:37 瀏覽:694
夜魔迅雷下載ftp 發布:2025-07-19 00:39:29 瀏覽:99
增值稅票安全接入伺服器地址 發布:2025-07-19 00:20:45 瀏覽:486
solidworkspcb伺服器地址 發布:2025-07-18 22:50:35 瀏覽:823
怎麼在堆疊交換機里配置vlan 發布:2025-07-18 22:42:35 瀏覽:630