高級語言編譯器
① 用於高級語言的編譯程序有哪兩種
用於高級語言的編譯程序有兩種:編譯程序和鏈接程序。
以c語言為例,編譯器是cc,可能鏈接程序就是link。
二者作用是不同的,編譯器是把源程序翻譯成符號語言,鏈接程序把來自不同源文件的多個程序整合起來,形成最終的可執行程序。
C++的編譯系統沿用了C語言。其他語種,如PASCAL,DELPHI,C#,OBJECT-C,本質上沒發生變化
高級語言本身分成兩類,編譯型和解釋性的,編譯型的就是上面的類型,解釋型的,如BASIC,java,
PHP,
PYTHON等,是不需要編譯的,可以直接根據源代碼(或中間代碼)直接翻譯到操作系統上。
② 高級語言,中的編譯器,是什麼作用形象比喻下。。一種協議,
編譯器,是把源代碼編譯成匯編等的低級代碼的工具~(很多時候還需經過連接才能變成機器碼!)就像是把英語翻譯成普通話的人。(要記錄下來,還需把普通話變成中文字寫下來)
③ C語言編譯器有哪些各有什麼特點
C語言編譯器目前主要有VC++、dev-C++、C-Free、win-TC、TC 2.0等等。
其中比較經典的VC++,微軟的產品,編譯器,鏈接器,運行,調試等功能於一體的強大開發工具,特點是功能十分強大,對於新手來說需要一段時間去摸索。
dev-C++是windows下一款開發c/c++的開發環境,使用gcc為編譯器,遵循標准,功能比較強大,語法高量,可以進行單步調試(這對排除錯誤很重要),進行斷點設置等功能,遵循C標准,是一款很強大的開發工具。
C-Free是一款支持多種編譯器的專業化C/C++集成開發環境(IDE)。利用C-Free,使用者可以輕松地編輯、編譯、連接、運行、調試C/C++程序。
TC 2.0:Borland公司的產品,在dos界面下編譯運行,小巧、靈活,但是不能使用滑鼠。
win-TC:在tc2.0的基礎上加上了界面,能夠使用滑鼠,具有語法高量,可以嵌入匯編等特點,對新手一些,拜託了不能用滑鼠的困難。
編譯器,簡單講,就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器(Linker) → 可執行程序 (executables)。
④ 為什麼高級語言編程需要編譯器
語言是人定義的,舉個簡單的例子
你創造個編譯器定義語句
「我實現A+B」,在編譯器裡面你事先定義了這個句子等價於C語言的
int
C=A
+
B;再由C語言通過類似的方法轉換成匯編語言,這樣就把高級語言一步步處理成計算機能執行的每步。打個比方。一棟房子很高,頂樓就是高級語言,樓梯就是編譯器,底層就是計算機能識別的操作。比如JAVA就是用C寫的,其樓層比C高。一般來說,同等演算法條件下C語言執行更快。關於樓梯的原理(編譯器),你想了解的話你的看編譯原理相關書籍,上面涉及很多數學知識,包括很多狀態轉化,詞法分析,語義分析。比如int
C=A+B中如何識別INT是什麼東西。「=」的意義等問題。說實話,如果你不是計算機專業,理解這個有困難的。對於一般人來說,不用從事相關工作的話,知道大概這個是幹嘛的就行了。比如你蓋個房子,你需要扳手,難道你要先學采鐵礦學冶煉學製作扳手的方法?。。
⑤ 高級語言的編譯系統是什麼
編譯器(Compiler)是一種計算機程序,它可以把一種計算機語言翻譯成另一種計算機語言。編譯器的輸入叫做源代碼,輸出叫做目標代碼。通常,編譯器的輸出往往能夠被其它程序處理(例如鏈接器),不過也有些編譯器輸出可讀的文本文件。
翻譯源代碼通常是為了創建可執行程序。「編譯器」最初是指那些高級語言代碼翻譯成較低級語言(如匯編語言或機器碼)的程序。把低級語言翻譯成高級語言的程序叫做反編譯器。
編譯器通常需要進行這些操作:詞法分析、預處理、解析、文法分析、代碼生成以及代碼優化。
⑥ 常見的C語言編譯器是什麼
目前最流行的C語言編譯器有以下幾種:
1、GNU Compiler Collection 或稱GCC
GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟體,也是 GNU計劃的關鍵部分。
GCC原本作為GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如Linux、BSD、Mac OS X等)採納為標準的編譯器,GCC同樣適用於微軟的Windows。GCC是自由軟體過程發展中的著名例子,由自由軟體基金會以GPL協議發布。
2、Microsoft C 或稱 MS C
Microsoft C 是c語言的一種IDE(集成開發環境),常見的還有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C等等......
3、Borland Turbo C 或稱 Turbo C
Turbo C是美國Borland公司的產品,Borland公司是一家專門從事軟體開發、研製的大公司。該公司相繼推出了一套 Turbo系列軟體, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 這些軟體很受用戶歡迎。
(6)高級語言編譯器擴展閱讀:
C編譯的整個過程很復雜,大致可以分為以下四個階段:
1、預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。
2、編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。
3、匯編階段將匯編語言翻譯成機器指令。
4、鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。
⑦ 計算機高級語言的編譯程序屬於什麼類的
計算機高級語言的編譯程序屬於系統軟體類。
編譯程序(Compiler,compiling program)也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。
(7)高級語言編譯器擴展閱讀:
編譯程序的功能
①語法檢查:檢查源程序是否合乎語法。如果不符合語法,編譯程序要指出語法錯誤的部位、性質和有關信息。編譯程序應使用戶一次上機,能夠盡可能多地查出錯誤。
②調試措施:檢查源程序是否合乎設計者的意圖。為此,要求編譯程序在編譯出的目標程序中安置一些輸出指令,以便在目標程序運行時能輸出程序動態執行情況的信息,如變數值的更改、程序執行時所經歷的線路等。這些信息有助於用戶核實和驗證源程序是否表達了演算法要求。
③修改手段:為用戶提供簡便的修改源程序的手段。編譯程序通常要提供批量修改手段(用於修改數量較大或臨時不易修改的錯誤)和現場修改手段(用於運行時修改數量較少、臨時易改的錯誤)。
④覆蓋處理:主要是為處理程序長、數據量大的大型問題程序而設置的。基本思想是讓一些程序段和數據公用某些存儲區,其中只存放當前要用的程序或數據;其餘暫時不用的程序和數據,先存放在磁碟等輔助存儲器中,待需要時動態地調入。
⑤目標程序優化:提高目標程序的質量,即佔用的存儲空間少,程序的運行時間短。依據優化目標的不同,編譯程序可選擇實現表達式優化、循環優化或程序全局優化。目標程序優化有的在源程序級上進行,有的在目標程序級上進行。
⑥不同語言合用:其功能有助於用戶利用多種程序設計語言編寫應用程序或套用已有的不同語言書寫的程序模塊。最為常見的是高級語言和匯編語言的合用。
⑧ 高級語言經過編譯器之後的處理
假設你的程序有兩種源代碼,一種是C語言寫的,一種是java寫的,現在要發布到這幾個平台上:
1、Windows 7/xp/vista...
2、Linux RedHat/Fedora/Unbutu...
3、Symbian S60/S50(手機)
那麼源程序如果是C語言的,需要找下面的工具:
1、VC60/VS2008,負責編譯生成VISTA/XP/WIN7用的.exe文件
2、G++,負責編譯生成Linux用的可執行程序
3、Symbian用的C++編譯器,不說也罷
如果源程序是JAVA語言的,那麼需要做的僅僅是用javac編譯、jar打包,然後:
1、確保目標WIN7/XP/VISTA安裝了java虛擬機
2、確保目標LINUX安裝了java虛擬機
3、確保目標手機Symbian系統已安裝了支持同版本的java虛擬機
看明白沒有?C語言編譯器是直接把源程序一步翻譯為目標計算機(16位,32位,64位)的指定晶元(X86或ALPHA PPC,RISC)、指定操作系統(WINDOWS,DOS,LINUX,SYMBIAN)用的特定可執行程序目標碼,
而JAVA編譯器是把程序翻譯為中間碼,由虛擬機將中間碼解釋為最終的指定晶元、指定操作系統的可執行程序目標碼
嚴格來說,C和C++、JAVA都是跨平台的,但C#肯定不是,至少目前還沒有人在LINUX上做C#的實現。
不同的是,C和C++是通過不同平台上的不同編譯器實現跨平台
JAVA是通過不同平台的不同虛擬機實現跨平台
這樣說你看懂了沒有?