階段(phase)和傳入編譯器(pass in compiler)的區別

一般來說,編譯器是一種計算機程式,它讀取用一種語言編寫的程式(稱為源語言),並將其翻譯成另一種語言(即目標語言)。傳統的源語言是C++等高階語言,目標語言是組合語言等低階語言。因此,一般來說,編譯器可以看作是從一種語言翻譯到另一種語言的翻譯人員。Pass和Phase是編譯器經常使用的兩個術語。編譯器的傳遞次數是編譯器經過原始碼(或它的某種形式的表示)的次數。為了便於構造,編譯器被分解成幾個部分。P...

階段vs傳入編譯器

一般來說,編譯器是一種計算機程序,它讀取用一種語言編寫的程序(稱為源語言),並將其翻譯成另一種語言(即目標語言)。傳統的源語言是C++等高級語言,目標語言是彙編語言等低級語言。因此,一般來說,編譯器可以看作是從一種語言翻譯到另一種語言的翻譯人員。Pass和Phase是編譯器經常使用的兩個術語。編譯器的傳遞次數是編譯器經過源代碼(或它的某種形式的表示)的次數。為了便於構造,編譯器被分解成幾個部分。Phase通常用於調用編譯器中這樣一個獨立的部分。

什麼是編譯器中的傳遞?

對編譯器進行分類的標準方法是按“通過”的數量。通常,編譯是一個相對資源密集型的過程,最初計算機沒有足夠的內存來保存這樣一個完成任務的程序。由於早期計算機硬件資源的侷限性,編譯器被分解成更小的子程序,這些子程序通過檢查源代碼(對源代碼或其他形式的源代碼進行“傳遞”)來完成其部分工作,並分別執行分析、轉換和翻譯任務。因此,根據這種分類,編譯器被識別為一次或多次通過編譯器。

顧名思義,one-pass編譯器在一個過程中編譯。編寫一個單通道編譯器更容易,而且它們的執行速度也比多通道編譯器快。因此,即使在資源受限的時候,語言的設計也使得它們可以一次性編譯(例如Pascal)。另一方面,一個典型的多遍編譯器是由幾個主要階段組成的。第一個階段是掃描器(也稱為詞法分析器)。Scanner讀取程序並將其轉換為一系列標記。第二個階段是解析器。它將中的標記字符串轉換為解析樹(或抽象語法樹),解析樹捕獲程序的語法結構。下一階段是句法結構的語義解釋。代碼優化階段和最終代碼生成階段遵循以下步驟。

編譯器的階段是什麼?

在談到編譯器構造時,經常會出現術語階段。最初,編譯器是由一個人為編譯一種簡單的語言而編寫的單個單片軟件的每一個簡單部分。但是當要翻譯的語言的源代碼變得複雜和龐大時,編譯器就被分解成多個(相對獨立的)階段。具有不同階段的優點是編譯器的開發可以在開發人員團隊中進行。此外,它通過允許階段被改進的階段或添加到編譯器中的附加階段(例如進一步的優化)來改進模塊化和重用。卡內基甜瓜大學的PQCC(Production Quality Compiler Compiler Project)介紹了將編譯分為階段的過程。他們引入了前端、中間端和後端這三個術語。大多數編譯器至少有兩個階段。但是通常,後端和前端封裝了這些階段。

階段編譯器和傳入編譯器的區別是什麼?

  • 發表於 2020-11-05 14:59
  • 閱讀 ( 18 )
  • 分類:科技

你可能感興趣的文章

種(species)和分階段溶液(phase in solution)的區別

...錄 1. 概述和主要區別 2. 溶液中的物種是什麼 3. 什麼是分階段解決方案 4. 並列比較-以表格形式表示的物種與分階段溶液 5. 摘要 什麼是溶液中的物種(species in solution)? 溶液中的組分是指形成溶液時溶質在溶劑中溶解而形成的化...

  • 發佈於 2020-10-04 03:13
  • 閲讀 ( 58 )

c(c)和目標c(objective c)的區別

...Objective C是基於C語言的。因此,C程式可以作為目標C進行編譯和執行。目標C由基本C以及面向物件的概念、訊息傳遞、協議等組成。C與目標C的主要區別在於C是結構化程式語言,而目標C是多正規化程式語言,它是C的超集主要支援...

  • 發佈於 2020-10-16 06:52
  • 閲讀 ( 57 )

第一階段(phase i)和ii期代謝(phase ii metabolism)的區別

第一階段和第二階段代謝的關鍵區別在於,第一階段代謝將母體藥物轉化為極性活性代謝產物,而第二階段代謝將母體藥物轉化為極性非活性代謝產物。 代謝(藥物代謝)是生物體對藥物的合成代謝和分解代謝。因此,藥物...

  • 發佈於 2020-10-17 12:11
  • 閲讀 ( 62 )

選中的(checked)和java中的未檢查異常(unchecked exception in java)的區別

...式連線到外部資源,如檔案、裝置或資料庫。這些異常由編譯器檢查。檢查的異常的一些示例包括IO異常和FileNotFound異常。當發生未檢查的異常時,應用程式不會連線到任何外部資源。編譯器不檢查這些異常。未檢查異常的一些...

  • 發佈於 2020-10-19 08:38
  • 閲讀 ( 63 )

語法錯誤(syntax error)和邏輯錯誤(logical error)的區別

...的語法來編寫程式。當出現語法錯誤時,稱為語法錯誤。編譯時發生語法錯誤。在執行時發生的錯誤稱為執行時錯誤。陣列越界、跳轉為零、訪問不可用的記憶體都是執行時錯誤的一些例子。在編寫程式時,需要遵循一系列步驟...

  • 發佈於 2020-10-19 09:24
  • 閲讀 ( 65 )

編譯時間(compile time)和執行時(runtime)的區別

...時間段稱為執行時。這兩個術語都與不同的程式生命週期階段有關。本文討論編譯時和執行時之間的區別。編譯時和執行時的關鍵區別在於,編譯時是將原始碼轉換為可執行檔案的程式設計生命週期階段,而執行時是指執行編譯...

  • 發佈於 2020-10-19 10:25
  • 閲讀 ( 59 )

路徑(path)和類路徑(classpath)的區別

...被轉換成位元組碼。然後位元組碼被轉換成機器碼。為了編譯和執行Java程式,程式設計師應該設定路徑和類路徑。即使這兩個詞看起來相似,也有區別。本文討論了path和classpath之間的區別。path和classpath的關鍵區別在於,path是...

  • 發佈於 2020-10-19 11:04
  • 閲讀 ( 50 )

標頭檔案(header file)和庫檔案(library file)的區別

...式原型。程式設計師可以自己編寫標頭檔案,也可以自帶編譯器。標頭檔案很有用,因為它們使程式更具組織性和可管理性。如果所有定義的函式都在同一個檔案中,則會使程式變得複雜。因此,程式設計師可以在編寫程式時包...

  • 發佈於 2020-10-19 18:35
  • 閲讀 ( 86 )

原始碼(source code)和目的碼(object code)的區別

...。可以使用流程圖、資料流圖(DFD)進行系統設計。設計階段的輸出可以是資料庫設計、工藝設計等,設計階段完成後,程式設計師可以使用相關的程式語言來實現這些設計。 圖01:原始碼 有許多程式語言。它們中的一些是C、C...

  • 發佈於 2020-10-19 18:56
  • 閲讀 ( 189 )

取決於機器(machine dependent)和機器無關程式碼最佳化(machine independent code optimization)的區別

...用於將這些指令轉換為機器程式碼或目的碼。它經過幾個階段來構建目的碼。程式碼最佳化就是其中之一。有兩種最佳化技術,如機器依賴和機器無關的程式碼最佳化。機器依賴程式碼最佳化與機器無關程式碼最佳化的關鍵區別...

  • 發佈於 2020-10-20 02:55
  • 閲讀 ( 50 )
elnz6276
elnz6276

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦