當前位置:首頁 » 編程軟體 » 什麼是大編譯

什麼是大編譯

發布時間: 2023-07-03 00:21:36

編譯和解釋的區別是什麼

1.定義區別

①編譯原理旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。

②匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。

2.處理方式區別

①編譯過程與解釋挺像,區別就在於編譯是將所有的源代碼指令一次性成翻目標代碼並執行。

②匯編過程就是把匯編指令一對一地翻譯成01機器碼的過程。而採用這種處理方式的語言只有一類:匯編語言。

3.特點區別

①編譯語言的特點就是不需要解釋器的參與,所以運行比較快,但是編譯好的程序只能在當前平台運行,是個局限性。

②匯編語言是當今世界上歷史最早,應用最廣,功能最強大,運行速度最快的編程語言。但是匯編語言開發工期長,可讀性差,並且不能跨平台編程。

Ⅱ 什麼是編譯原理

編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。雖然只有少數人從事編譯方面的工作,但是這門課在理論、技術、方法上都對學生提供了系統而有效的訓練,有利於提高軟體人員的素質和能力。
這門課程關注的是編譯器方面的產生原理和技術問題,似乎和計算機的基礎領域不沾邊,可是編譯原理卻一直作為大學本科的 必修課程,同時也成為了研究生入學考試的必考內容。編譯原理及技術從本質上來講就是一個演算法問題而已,當然由於這個問題十分復雜,其解決演算法也相對復雜。 我們學的數據結構與演算法分析也是講演算法的,不過講的基礎演算法,換句話說講的是演算法導論,而編譯原理這門課程講的就是比較專註解決一種的演算法了。在20世紀 50年代,編譯器的編寫一直被認為是十分困難的事情,第一Fortran的編譯器據說花了18年的時間才完成。在人們嘗試編寫編譯器的同時,誕生了許多跟 編譯相關的理論和技術,而這些理論和技術比一個實際的編譯器本身價值更大。就猶如數學家們在解決著名的哥德巴赫猜想一樣,雖然沒有最終解決問題,但是其間 誕生不少名著的相關數論。

Ⅲ 編譯程序和解釋程序都是什麼意思

1、編譯程序是把用高級程序設計語言或計算機匯編語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序,屬於採用生成性實現途徑實現的翻譯程序。編譯程序以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出;編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。

2、解釋程序是高級語言翻譯程序的一種,它將源語言書寫的源程序作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程序。就像外語翻譯中的「口譯」一樣,說一句翻一句,不產生全文的翻譯文本。

(3)什麼是大編譯擴展閱讀:

編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。

Ⅳ 什麼是編譯什麼是運行

就說C語言吧,編譯是把
xxx.c
的源代碼轉換成可執行的xxx.exe的過程。然後就可以直接運行了,xxx.c是沒有辦法直接運行的。

Ⅳ 編譯程序是什麼意思編譯是什麼意思

編譯程序(Compiler,compiling program)也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。

解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。

(5)什麼是大編譯擴展閱讀:

結構:

編譯過程分為分析和綜合兩個部分,並進一步劃分為詞法分析、語法分析、語義分析、代碼優化、存儲分配和代碼生成等六個相繼的邏輯步驟。這六個步驟只表示編譯程序各部分之間的邏輯聯系,而不是時間關系。

編譯過程既可以按照這六個邏輯步驟順序地執行,也可以按照平行互鎖方式去執行。在確定編譯程序的具體結構時,常常分若干遍實現。對於源程序或中間語言程序,從頭到尾掃視一次並實現所規定的工作稱作一遍。每一遍可以完成一個或相連幾個邏輯步驟的工作。

可以把詞法分析作為第一遍;語法分析和語義分析作為第二遍;代碼優化和存儲分配作為第三遍;代碼生成作為第四遍。反之,為了適應較小的存儲空間或提高目標程序質量,也可以把一個邏輯步驟的工作分為幾遍去執行。

Ⅵ 編譯詳細資料大全

編譯(compilation , compile) 1、利用編譯程式從源語言編寫的源程式產生目標程式的過程。 2、用編譯程式產生目標程式的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程式把人們熟悉的語言換成2進制的。 編譯程式把一個源程式翻譯成目標程式的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼最佳化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程式分析,分析過程中發現有語法錯誤,給出提示信息。

編譯語言是一種以編譯器來實現的程式語言。它不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何程式語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程式的套用有關。

基本介紹

  • 中文名 :編譯
  • 外文名 :compilation
  • 學科 :計算機科學
  • 用途 :編譯程式
  • 解釋 :編寫的源程式產生目標程式的過程
  • 領域 :編譯原理
編譯程式,詞法分析,語法分析,中間代碼,代碼最佳化,目標代碼,表格管理,出錯處理,

編譯程式

將某一種程式設計語言寫的程式翻譯成等價的另一種語言的程式的程式, 稱之為編譯程式(compiler) .

詞法分析

詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程式進行掃描,產生一個個的單詞符號,把作為字元串的源程式改造成為單詞符號串的中間程式。執行詞法分析的程式稱為詞法分析程式或掃描器。 源程式中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表它自身的值了。若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。 詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。

語法分析

編譯程式的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程式,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程式是最終的一個語法單位。編譯程式的語法規則可用上下文無關文法來刻畫。 語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。而自下而上分析法採用的是移進歸約法,基本思想是:用一個暫存符號的先進後出棧,把輸入符號一個一個地移進棧里,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。

中間代碼

中間代碼是源程式的一種內部表示,或稱中間語言。中間代碼的作用是可使編譯程式的結構在邏輯上更為簡單明確,特別是可使目標代碼的最佳化比較容易實現中間代碼,即為中間語言程式,中間語言的復雜性介於源程式語言和機器語言之間。中間語言有多種形式,常見的有逆波蘭記號、四元式、三元式和樹。

代碼最佳化

代碼最佳化是指對程式進行多種等價變換,使得從變換後的程式出發,能生成更有效的目標代碼。所謂等價,是指不改變程式的運行結果。所謂有效,主要指目標代碼運行時間較短,以及佔用的存儲空間較小。這種變換稱為最佳化。 有兩類最佳化:一類是對語法分析後的中間代碼進行最佳化,它不依賴於具體的計算機;另一類是在生成目標代碼時進行的,它在很大程度上依賴於具體的計算機。對於前一類最佳化,根據它所涉及的程式范圍可分為局部最佳化、循環最佳化和全局最佳化三個不同的級別。

目標代碼

目標代碼生成是編譯的最後一個階段。目標代碼生成器把語法分析後或最佳化後的中間代碼變換成目標代碼。目標代碼有三種形式: ① 可以立即執行的機器語言代碼,所有地址都重定位; ② 待裝配的機器語言模組,當需要執行時,由連線裝入程式把它們和某些運行程式連線起來,轉換成能執行的機器語言代碼; ③ 匯編語言代碼,須經過匯編程式匯編後,成為可執行的機器語言代碼。 目標代碼生成階段應考慮直接影響到目標代碼速度的三個問題:一是如何生成較短的目標代碼;二是如何充分利用計算機中的暫存器,減少目標代碼訪問存儲單元的次數;三是如何充分利用計算機指令系統的特點,以提高目標代碼的質量。

表格管理

編譯過程中源程式的各種信息被保留在種種不同的表格,編譯各階段的工作都涉及到構造、查找、或更新有關的表格。 編譯程式的公共輔助部分。對源程式中的各種量進行管理,登記在相應的表格。編譯程式處理時通過查表得到所需的信息。

出錯處理

如果編譯過程中發現源程式有錯誤,編譯程式應報告錯誤的性質和錯誤的發生的地點,並且將錯誤所造成的影響限制在盡可能小的范圍內,使得源程式的其餘部分能繼續被編譯下去,有些編譯程式還能自動糾正錯誤,這些工作由錯誤處理程式完成。 需要注意的是,一般上編譯器只做語法檢查和最簡單的語義檢查,而不檢查程式的邏輯。

Ⅶ 編譯系統詳細資料大全

編譯系統又稱為第二類編程環境開發者根據語言的規定編寫源程式,然後進行編譯、連線,生成執行檔,例如DOS作業系統加各類高級語言,如FORTRAN、PASCLL、C語言等就屬於這種類型介面平台,用於提供編譯任務輸入介面以及處理狀態信息輸出介面,並根據輸入的編譯任務生成任務名;編譯伺服器,用於解析所述任務名,獲得相應的原始碼,並進行編譯,同時產生所述編譯任務的處理狀態信息提供給所述介面平台。

基本介紹

  • 中文名 :編譯系統
  • 外文名 :Compiling system
  • 分類1 :MTK分散式編譯系統
  • 分類2 :DM2預編譯系統
  • 分類3 :編譯系統CMake
過程,MTK分散式編譯系統,DM2預編譯系統,編譯系統CMake,反編譯系統,Symbian編譯系統,

過程

接收輸入的編譯任務;根據所述編譯任務生成任務名;解析獲得所述任務名對應的原始碼;編譯所述原始碼,並輸出所述編譯任務的處理狀態信息。上述技術方案中,通過介面平台接收編譯任務,由介面平台以任務名形式發起編譯請求,進行編譯,簡化了編譯輸入操作;處理狀態信息,通過介面平台實時提供給客戶端,簡化了編譯監控操作,大大節約了人力資源。

MTK分散式編譯系統

眾所周知,MTK平台使用ARM ADS進行編譯,一千多個源檔案,單機需要四五十分鍾才能完成,如果機器開著防毒軟體,速度會更慢。為了提高編譯速度,可以把防毒軟體暫時停掉,但是效果不會太明顯。解決問題的根本做法是利用網內閑置的機器,搭建一個分散式系統,多台機器同時編譯,可以收到明顯效果。 本系統由注冊伺服器、編譯伺服器和客戶端組成。網內啟動一個注冊伺服器,多個編譯伺服器。在MTK6223平台上,單機new一次需要50分鍾的項目,使用10個編譯伺服器同時編譯,new一次需要13分鍾。模組編譯之前是在客戶端工作的,需要9分鍾,其中為了實現分散式編譯,壓縮原始碼佔用了2分鍾,檔案下載到編譯伺服器需要2分鍾。 從第一個模組編譯到最後link之前,10台機器僅用4分鍾就完成了1200個c檔案的編譯工作。最後的link是在本機進行的,幾十秒就完了。 我曾經試過18台機器同時編譯,1200個c檔案不到2分鍾就編譯完成了,當然下載時間需要3分鍾。對於開發人員來講,new一次不再是夢魘。 當然,不能無限制地增加編譯伺服器,要考慮檔案傳輸所消耗的時間。MTK平台檔案很多,需要由客戶端向伺服器分發。一般地,一個客戶端與十個伺服器聯合編譯可以達到理想效果。

DM2預編譯系統

預編譯系統是DM2系統的重要組成部分。它支持在C程式中嵌入使用SQL語言,充分發揮語言數據類型豐富、處理方便靈活的優勢,又以SQL語言彌補高級語言難以描述資料庫操作的不足,為用戶提供了建立大型管理信息系統和處理復雜事務所需要的工作環境。 預編譯系統還支持互動式介面DM2-ISQL、套用開發工具集DM2-FORM、DM2-GRAPH、DM2-REPORT等工作環境。

編譯系統CMake

CMake就像是我們在uni上使用的make一樣,是用來管理怎樣編譯一個project的。它的好處是: 1) 跨越多個作業系統平台,包括當前套用最廣泛的windows,unix(包括Mac OS X). 2) 採用BSD風格的協定開放原始碼。據我個人閱讀協定檔案,沒發現協定與兩句BSD協定有什麼不同。 3) 它可以支持具有非常復雜的路徑、庫依賴的程式的編譯。比如它支持編譯個程式:它依賴於很多的庫以及其它一些代碼檔案,而每一個庫又有很多子目錄。。。 4) 像很多Make一樣,它會對曾經編譯的檔案做一些cache一遍加速以後的編譯。 使用這個編譯系統的時候,需要每個目錄/子目錄創建一個名為CMakeLists.txt的檔案。 這個項目歷史也算是比較悠久了,從2000年就開始了。 當前使用這個編譯系統的項目:llvm/clang。。。 我就是從clang的原始碼里發現的,郵件列表裡有人推薦使用cmake,不要使用msvc的.sln檔案

反編譯系統

高級語言源程式經過 編譯 變成執行檔,反編譯就是逆過程。 但是通常不能把執行檔變成高級語言原始碼,只能轉換成匯編程式。 計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程式(可執行程式)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。 反編譯是一個復雜的過程,所以越是高級語言,就越難於反編譯,但目前還是有許許多多的反編譯軟體: VB: VBExplorer ;只能反編譯界面圖像,好像代碼不能完全反編譯 java: JAD ;java的反編譯比較常見,所以反編譯比較完全C++ : eXeScope

Symbian編譯系統

所謂編譯,就是在編譯程式讀取源程式(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的 匯編代碼,再由匯編程式轉換為機器語言,並且按照作業系統對執行檔格式的要求連結生成可執行程式。 UNIX環境下的C編譯系統所遵循的也是這么一個一般的過程。值得注意的是這個過程並不是有某個單個程式完成的,而是有多個分別完成某一方面工作的程式組合完成的。這一設計思想同我們最初提到的UNIX系統軟體功能專一的特點是相符的。 歸納起來,可以將UNIX環境下C編譯系統的工作過程下圖所示。 C源程式頭檔案-->預編譯處理(cpp)-->編譯程式本身-->最佳化程式-->匯編程式-->連結程式-->執行檔 一般我們用命令來完成對源程式的編譯工作。此命令並不是一個二進制的可執行程式,而是一個shell命令檔案。它的工作就是依次調用我們上面所列出的各個完成某部分工作的具體程式,將指定的c源程式轉換成可執行的代碼。 在UNIX系統中,實現C源程式到執行檔的這一轉換過程的工具是。在大多數系統中實際上是一個shell命令檔案。有些系統中的C編譯程式可能並不叫而是其它的一個什麼名稱,如Sun工作站上常用的g等等。但這些都無關緊要。大多數系統中C編譯命令的用法基本上都是類似的。我們這里介紹的將以SVR4上的C編譯系統為基礎。 其中我們也要知道編譯系統也是一個系統軟體,而不是套用軟體。

Ⅷ 解釋和編譯有什麼區別

一、與計算機的交流方式不同

1、解釋程序不產生目標代碼,它逐條地取出源程序中的語句,邊解釋,邊執行;解釋器把源代碼文件邊解釋成機器語言邊交給CPU執行。

三、開發便捷性

1、解釋程序可以隨時修改,立刻生效,改完源代碼後,直接運行看效果

2、編譯程序每次修改源代碼,都要重新編譯,生成機器碼文件

四、運行速度

1、解釋程序運行效率低,所有的代碼均需經過解釋器邊解釋變執行,速度比編譯型慢很多

2、編譯程序執行速度快,因為你的程序代碼已經翻譯成了是計算機可以理解的機器語言。

Ⅸ 小白求助,編譯是什麼,為什麼需要編譯

人與機器交流(即人讓計算機按照人的意願做事)依賴於語言
語言的層次是:自然語言->高級編程語言->匯編語言->機器碼
人最熟悉的肯定是自然語言(就是你平時說的話)。
而計算機的cpu只認識二進制的機器碼,機器碼指導計算機做什麼操作(如邏輯運算)。
高級編程語言跟自然語言的關系更近些,對人來說相當於自然語言的白痴版,如java中的對象與類的概念可能對應於現實世界的某種事物,如C語言中的函數可能對應了一個功能,比如列印文件,經過簡單的訓練,人也能大概的讀懂。
匯編語言和機器碼更接近些,每個匯編指令一般都會對應一條機器碼,而高級編程語言中的一個語句(如if else什麼的)可能會對應多條匯編指令,匯編指令一般就是算術運算(如add)、邏輯運算(如and)、數據傳送(如mov)、條件判斷、跳轉等,只能用這些簡單功能的匯編指令組合來完成一個復雜的功能。人看懂匯編就很吃力了,更別提用匯編來完成想要的功能,太吃力,這個過程還是交個編譯器比較好。
而機器碼對於一般的程序員來說,就是天書,也基本沒人願意去看。
自然語言最容易表述人們的要求,當用戶用自然語言表述了需要的功能後,從自然語言到高級語言的轉換過程由程序員來完成,而由高級編程語言到匯編、由匯編到機器碼的過程都由編譯器來完成,由編譯器完成的這個過程也就是編譯了。
高級編程語言的代碼經過編譯階段成為匯編代碼,匯編代碼經過匯編階段變成機器碼,機器碼文件經過鏈接階段變成可執行文件(.exe)。一般編譯是指的編譯階段和匯編階段的組合,編譯器的工作一般是編譯和鏈接。
這就是我的理解,希望你幫到你。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:642
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:89
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:312
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:794
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:348
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:818
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:369
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:596