當前位置:首頁 » 編程軟體 » 計算機編譯器硬體

計算機編譯器硬體

發布時間: 2022-07-05 19:06:27

① 什麼是編譯

編譯器

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

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

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

* 源程序(source code)→預處理器(preprocessor)→編譯器(compiler)→匯編程序(assembler)→目標程序(object code)→連接器(鏈接器,Linker)→可執行程序(executables)

工作原理

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

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

編譯器種類

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

② 編譯器的種類

編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平台)相同的環境下運行的目標代碼,這種編譯器又叫做「本地」編譯器。另外,編譯器也可以生成用來在其它平台上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬體平台時非常有用。「源碼到源碼編譯器」是指用一種高級語言作為輸入,輸出也是高級語言的編譯器。例如: 自動並行化編譯器經常採用一種高級語言作為輸入,轉換其中的代碼,並用並行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRAN的DOALL指令)。 編譯器後端主要負責分析,優化中間代碼(Intermediate representation)以及生成機器代碼(Code Generation)。
一般說來所有的編譯器分析,優化,變型都可以分成兩大類: 函數內(intraproceral)還是函數之間(interproceral)進行。很明顯,函數間的分析,優化更准確,但需要更長的時間來完成。

③ 計算機都有編譯器和解釋器嗎

編譯器是程序員開發程序用的~!
而解釋器則是執行腳本程序用到~
編譯器和解釋器都是軟體,非硬體``
而計算機上通常在系統中已裝有某些腳本或批處理的解釋器。
編譯器大多數就沒有內置安裝了。

④ 計算機的硬體和軟體有哪些

硬體
「計算機硬體」的簡稱。與「軟體」相對。電子計算機系統中所有實體部件和設備的統稱。從基本結構上來講,電腦可以分為五大部分:運算器、存儲器、控制器、輸入設備、輸出設備等。

一般我們看到的電腦都是由:主機(主要部分)、輸出設備(顯示器)、輸入設備(鍵盤和滑鼠)三大件組成。 而主機是電腦的主體 ,在主機箱中有:主板、CPU、內存、電源、顯卡、音效卡、網卡、硬碟、軟碟機、光碟機等硬體。其中,主板、CPU、內存、電源、顯卡、硬碟是必須的,只要主機工作,這幾樣缺一不可。
軟體
目錄·系統軟體
·應用軟體
·操作系統軟體
·軟體開發

軟體[software](中國大陸及香港用語,台灣作軟體)是一系列按照特定順序組織的計算機數據和指令的集合,按照特定順序組織的電腦數據和指令的集合。一般來講軟體被劃分為系統軟體、應用軟體和介於這兩者之間的中介軟體。其中系統軟體為計算機使用提供最基本的功能,但是並不針對某一特定應用領域。而應用軟體則恰好相反,不同的應用軟體根據用戶和所服務的領域提供不同的功能。

軟體並不只是包括可以在計算機上運行的電腦程序,與這些電腦程序相關的文檔一般也被認為是軟體的一部分。簡單的說軟體就是程序加文檔的集合體。

軟體被應用於世界的各個領域,對人們的生活和工作都產生了深遠的影響。

系統軟體

系統軟體是負責管理計算機系統中各種獨立的硬體,使得它們可以協調工作。系統軟體使得計算機使用者和其他軟體將計算機當作一個整體而不需要顧及到底層每個硬體是如何工作的。

一般來講,系統軟體包括操作系統和一系列基本的工具(比如編譯器,資料庫管理,存儲器格式化,文件系統管理,用戶身份驗證,驅動管理,網路連接等方面的工具)。

應用軟體

應用軟體是為了某種特定的用途而被開發的軟體。它可以是一個特定的程序,比如一個圖像瀏覽器。也可以是一組功能聯系緊密,可以互相協作的程序的集合,比如微軟的Office軟體。也可以是一個由眾多獨立程序組成的龐大的軟體系統,比如資料庫管理系統。

較常見的有
文字處理軟體 如Office、WPS等
信息管理軟體 如Assces資料庫
輔助設計軟體 如AutoCAD、Photoshop
實時控制軟體
教育與娛樂軟體
圖形圖像 coreldraw ,painter,GIMP(linux下),3DS MAX,MAYA,softimage|xsi,lightwave,cineme 4d,Houdini
後期合成軟體 after effects,combustion,digital fusion,shake,flame
殺毒軟體 如卡巴斯基、瑞星等

操作系統軟體

操作系統是一管理電腦硬體與軟體資源的程序,同時也是計算機系統的內核與基石。操作系統身負諸如管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出設備、操作網路與管理文件系統等基本事務。操作系統也提供一個讓使用者與系統交互的操作介面。

⑤ 編譯器領域需要懂硬體嗎

懂的。
編譯原理是研究各種語言轉換(不夠專業)為機器語言的過程中的各種理論。編譯原理是將計算機語言轉化為可以在計算機硬體上直接運行的機器語言,是翻譯語言的一種。
編譯原理是研究各種語言轉換(不夠專業)為機器語言的過程中的各種理論。編譯原理是將計算機語言轉化為可以在計算機硬體上直接運行的機器語言,是翻譯語言的一種。

⑥ 硬體與內核的關系,或者說 硬體與編譯器的關系

操作系統主要分為兩部分:內核(Kernel),殼(Shell)。

顧名思義,內核主要實現計算機硬體與殼之間的信息傳遞與溝通,是一個操作系統最核心技術的體現;殼主要負責傳遞內核與應用程序之間的信息交流,將內核與軟體的內外部命令用利用底層語言進行相互轉譯,實現一個個的操作請求。對於Windows系統來說,內核與殼之間相互聯系,就如同一個只會外語的洋老闆與中國翻譯的位置,是一個管理與被管理的關系;對於Unix與Linux來說,由於將內核與殼完全分離,就如同一個廠商與一個代理商之間的關系,雙方互利協作,廠商可以隨時取消代理商的代理權來另找代理,而代理同時也可以不需要這個代理權。

WINDOWS操作系統大家應該都不會陌生,這是全球最大的操作系統開發商——Microsoft公司開發的。其伺服器操作系統重要版本WINNT 4.0 Server、Win2000/Advanced Server、Win2003/Advanced Server,也支撐起目前市面上應用最多的伺服器操作系統——Windows伺服器操作系統派應用。

NetWare操作系統對現在一些IT圈裡的朋友可能就比較陌生,由於種種原因,它的市場佔有率已經非常局限,主要應用在某些特定的行業中。也就是因為此,在很多朋友在劃分操作系統派系的時候,去除了NETWARE的代表權。其實,如果80年代前出生的老IT,對於NetWare這個名詞就會異常熟悉了,因為在當初各種設備和網路都比較落後的年代,NetWare在區域網應用中占據著絕對的高額市場;而就算是目前,在一些特定行業和事業單位中,NetWare優秀的批處理功能和安全、穩定的系統性能也有很大的生存空間。NetWare目前常用的版本主要有Novell的3.11、3.12、4.10、5.0等中英文版。

Unix操作系統由AT&T公司和SCO公司共同推出,主要支持大型的文件系統服務、數據服務等應用。由於一些出眾的伺服器廠商生產的高端伺服器產品中甚至只支持Unix操作系統,因而在很多人的眼中,Unix甚至成為高端操作系統的代名詞。目前市面上流傳的主要有SCO SVR、BSD Unix、SUN Solaris、IBM-AIX 。

Linux操作系統是國外幾位IT前輩,在Posix和Unix基礎上開發出來的,支持多用戶、多任務、多線程、多CPU。Linux開放源代碼政策,使得基於其平台的開發與使用無須支付任何單位和個人的版權費用,成為後來很多操作系統廠家創業的基石,同時也成為目前國內外很多保密機構伺服器操作系統采購的首選。目前國內主流市場中使用的主要有Novell的中文版Suse Linux 9.0、小紅帽系列、紅旗Linux系列等。

⑦ 計算機硬體和軟體的區別是什麼

一、功能不同

1、計算機硬體:輸入並存儲程序和數據,以及執行程序把數據加工成可以利用的形式。

2、計算機軟體:是用戶與硬體之間的介面界面,用戶主要是通過軟體與計算機進行交流。

二、特點不同

1、計算機硬體:按系統結構的要求構成一個有機整體為計算機軟體運行提供物質基礎。

2、計算機軟體:計算機軟體多用於某種特定目的,如控制一定生產過程,使計算機完成某些工作;而文學作品則是為了閱讀欣賞,滿足人們精神文化生活需要;可援引多種法律保護,文字作品則只能援引著作權法。

三、組成不同

1、計算機硬體:由電子,機械和光電元件等組成的各種物理裝置。

2、計算機軟體:計算機系統中的程序及其文檔。

⑧ 請問程序編譯器是硬體還是軟體

編譯器是一種一應用軟體,,你如編程技術好的話也可自己編一個自己專用的編譯器,,,,,當然你既然在問這種問題就說明你沒有這能力,,,

⑨ 什麼是計算機軟體;什麼是計算機硬體

硬體你看的到摸的著的,就是平常說的主板,顯示卡之類的,軟體是人編寫的指令,它以硬體為載體來對我們傳達信息。比如我們用的QQ,和windows操作系統。 電腦軟體,是人們為了告訴電腦要做什麼事而編寫的,電腦能夠理解的一串指令,有時也叫代碼、程序。 根據功能的不同,電腦軟體可以粗略地分成四個層次。最貼近電腦硬體的是一些小巧的軟體。它們實現一些最基本的功能,通常「固化」在只讀存儲器晶元中,因此稱為固件。系統軟體包括操作系統和編譯器軟體等。系統軟體和硬體一起提供一個「平台」。它們管理和優化電腦硬體資源的使用。常見的中間件包括資料庫和萬維網伺服器等,它們在應用軟體和平台之間建立一種橋梁。應用軟體種類最多,包括辦公軟體、電子商務軟體、通信軟體、行業軟體,游戲軟體等等。 電腦軟體都是用各種電腦語言(也叫程序設計語言)編寫的。最底層的叫機器語言,它由一些0和1組成,可以被某種電腦直接理解,但人就很難理解。上面一層叫匯編語言,它只能由某種電腦的匯編器軟體翻譯成機器語言程序,才能執行。人能夠勉強理解匯編語言。人常用的語言是更上一層的高級語言,比如C, Java, Fortran, BASIC。這些語言編寫的程序一般都能在多種電腦上運行,但必須先由一個叫作編譯器或者是解釋器的軟體將高級語言程序翻譯成特定的機器語言程序。編寫電腦軟體的人員叫程序設計員、程序員、編程人員。他們當中的高手有時也自稱為黑客。 由於機器語言程序是由一些0和1組成的,它又被稱為二進制代碼。匯編語言和高級語言程序也被稱為源碼。在實際工作中,一般來講,編程人員必須要有源碼才能理解和修改一個程序。很多軟體廠家只出售二進制代碼。近年來,國際上開始流行一種趨勢,即將軟體的源碼公開,供全世界的編程人員共享。這叫「開放源碼運動」。 軟體是什麼?硬體是什麼?軟、硬體之間的區別 ? 硬體就是實際的硬體設備如:內存條、CPU、顯示器、……。 軟體就是我們平常用的如瑞星、OFFICE、等等。 沒有軟體的計算機,也叫「裸機」,可以說是廢鐵一堆。 軟體可分為專用軟體和通用軟體。通用軟體和操作系統,專用的軟體如PS,DW。 1、軟體:其實很好理解,就如同是一個人思想和靈魂。要是沒有它的話,那麼再好的電腦也沒什麼太大的用處,放在家裡就等於是廢鐵。 2、硬體:它如同是一個人的身軀。如果身體也沒了,再好創意和思想也無法最大限度的發揮,辦起事情來總有不便。 總結:對於電腦來說,軟體是思想和靈魂,硬體就是身軀。如同一個人既要有健康的思想,也要有強壯的身軀。所以它們之間不可分割的一個整體。 二、補丁只是系統程序和應用程序的升級補充,是用來安裝後防止漏洞,增加安全性的,不是拿來使用

⑩ 計算機編譯器是什麼,怎麼用

計算機編譯器可以說是計算機軟體的生產工具,幾乎所有的軟體都是由編譯器編譯而成的。用的方法有兩種,第一個種是集成在了開發環境里,第二種是用命令行編譯。

熱點內容
liunxsvn伺服器搭建 發布:2025-02-11 00:15:31 瀏覽:698
p7空間存儲空間其他 發布:2025-02-10 23:58:33 瀏覽:393
怎樣把多個文件壓縮 發布:2025-02-10 23:53:04 瀏覽:45
南山存儲器設備供應商哪家質量好 發布:2025-02-10 23:46:50 瀏覽:417
安卓沼澤激戰哪裡下載 發布:2025-02-10 23:45:03 瀏覽:261
網站伺服器如何連接光纖 發布:2025-02-10 23:42:29 瀏覽:730
組合鍵腳本 發布:2025-02-10 23:32:43 瀏覽:554
安卓籃球手游在哪裡下 發布:2025-02-10 23:21:55 瀏覽:135
linux改變所有者 發布:2025-02-10 23:04:13 瀏覽:650
源碼曹毅 發布:2025-02-10 23:04:01 瀏覽:582