當前位置:首頁 » 編程軟體 » 編譯器做什麼

編譯器做什麼

發布時間: 2023-04-28 21:51:13

編譯器和解釋器的主要區別是什麼他們相對於對方各自的優點

解釋器是解釋執行的源代碼,編譯器是將源代碼編譯成目標代碼

他們最大的區別是程序運行時需要解釋器邊解釋邊執行,而編譯器則在運行時是完全不需要的

解釋器的優點是比較容易讓用戶實現自己跨平台的代碼,比如javaphp等,同一套代碼可以在幾乎所有的操作系統上執行,而無需根據操作系統做修改;
編譯器的目的就是生成目標代碼再由連接器生成可執行的機器碼,這樣的話需要根據不同的操作系統編制代碼,雖然有像Qt這樣的源代碼級跨平台的編程工具庫,但在不同的平台上仍然需要重新編譯連接成可執行文件,但其執行效率要遠遠高於解釋運行的程序。
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)

② 編譯器在編譯的時候做了什麼給申明的變數分配內存

編譯器在編譯的時候是不會聲明變數和分配內存的。 分配內存之類的是在運行時執行的。

一般編譯器在編譯的時候,只是做代碼的格式檢查, 然後將代碼轉換成機器碼或中間代碼。

③ 編譯器在編譯階段,究竟做哪些事情

1. 預處理首先源代碼文件(.c/.cpp)和相關頭文件(.h/.hpp)被預處理器cpp預編譯成.i文件(C++為.ii)。預處理命令為:gcc –E hello.c –o hello.i預編譯過程主要處理那些源代碼中以#開始的預編譯指令,主要處理規則如下:u 將所有的#define刪除,並且展開所有的宏定義;u 處理所有條件編譯指令,如#if,#ifdef等;u 處理#include預編譯指令,將被包含的文件插入到該預編譯指令的位置。該過程遞歸進行,及被包含的文件可能還包含其他文件。u 刪除所有的注釋//和 /**/;u 添加行號和文件標識,如#2 「hello.c」 2,以便於編譯時編譯器產生調試用的行號信息及用於編譯時產生編譯錯誤或警告時能夠顯示行號信息;u 保留所有的#pragma編譯器指令,因為編譯器須要使用它們。2. 編譯編譯過程就是把預處理完的文件進行一系列詞法分析,語法分析,語義分析及優化後生成相應的匯編代碼文件(.s)。編譯的命令為:gcc –S hello.i –o hello.s或者從源文件直接輸出匯編代碼文件:gcc –S hello.c –o hello.s現在版本的GCC把預編譯和編譯兩個步驟合並成一個步驟,由程序cc1來完成(C++為cc1plus)。3. 匯編匯編就是將匯編代碼轉變成機器可以執行的命令,生成目標文件(.o),匯編器as根據匯編指令和機器指令的對照表一一翻譯即可完成。匯編的命令為:gcc –c hello.s –o hello.o或者從源文件直接輸出目標文件:gcc –c hello.c –o hello.o4. 鏈接鏈接就是鏈接器ld將各個目標文件組裝在一起,解決符號依賴,庫依賴關系,並生成可執行文件。鏈接的命令為:ld –static crt1.o crti.o crtbeginT.o hello.o –start-group –lgcc –lgcc_eh –lc-end-group crtend.o crtn.o一般我們使用一條命令就可以完成上述4個步驟:gcc hello.c實際上gcc只是一些其它程序的包裝,它會根據不同參數去調用預編譯編譯程序cc1、匯編器as、鏈接器ld。

④ 單片機內部基本原理 bin文件如何跑起來 編譯器做了什麼

無論是單片機還是cpu內部主要有三種部件 ALU 控制器 寄存器。

這個要從編譯器開始講起,編譯器會給你編寫的軟體增加一個頭部,無論是MDK還是IAR等等,這個頭部是做了什麼工作那?頭部主要利用單片機寄存器上電後從FLASH將全局變數以及全局未初始化變數搬移倒RAM,增加堆棧 復位 中斷向量表 才開始從flash讀取你編寫的程序,因為編譯器已經把程序整個編碼為機器碼放在flash,有不太了解機器碼的可以再去了解,機器碼主要是運算加減搬移的那些操作,只不過單片機它就認識了。

單片機內部的控制器讀取flash的機器碼,通過內部R0-R15做數據中轉和RAM交換數據,通過ALU做運算,ALU非常擅長做邏輯的運算,寄存器是存放需要暫存處理的數據,使得它跑了起來。

編譯器----編譯器的程序----bin文件----機器碼----運行

⑤ 編譯器是什麼意思,是做什麼的

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

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

有一個稱為LCC的編譯器,還挺不錯的;還有一個用於分析其規則的小工具;

⑥ 華為方舟編譯器是干什麼用的

華為的方舟編譯器是屬於系統內部底層的一個架構,類似於安卓底層架構來的,是手機運行的重要程序。

⑦ C語言代碼編輯器是干什麼用的啊急盼回答!!!謝謝了

編程語言有很多種,它只是一種語言.編譯軟體(下面簡稱:編譯器)是用來編譯編程語言的,把它編譯成我們所說的"程序".單純的編程語言是沒有作用的,要經過特定的編譯器編譯後才有作業.比如C語言(編程語言)寫完後,就經過C語言的編譯器編譯後才是程序

Turbo C 是美國Borland 公司的產品,Borland公司是一家專門從事軟體開發、研製的大公司。該公司相繼推出了一套 Turbo系列軟體, 如Turbo BASIC, TurboPascal, Turbo Prolog, 這些軟體很受用戶歡迎。該公司在1987年首次推出TurboC 1.0 產品, 其中使用了全然一新的集成開發環境, 即使用了一系列下拉式菜單, 將文本編輯、程序編譯、連接以及程序運行一體化, 大大方便了程序的開發。1988年, Borland 公司又推出Turbo C1.5版本, 增加了圖形庫和文本窗口函數庫等, 而Turbo C 2.0 則是該公司1989年出版的。Turbo C2.0在原來集成開發環境的基礎上增加了查錯功能, 並可以在Tiny模式下直接生成.COM (數據、代碼、堆棧處在同一64K 內存中) 文件。還可對數學協處理器 (支持8087/80287/80387等)進行模擬。
Borland公司後來又推出了面向對象的程序軟體包Turbo C++,它繼承發展Turbo C 2.0 的集成開發環境, 並包含了面向對象的基本思想和設計方法。1991年為了適用Microsoft 公司的Windows 3.0 版本, Borland 公司又將Turbo C++ 作了更新, 即Turbo C 的新一代產品Borlandc C++也已經問世了。

⑧ 華為方舟編譯器是做什麼的


很多人問華為方舟編譯器是什麼?今天我們就來給大家說說華為方舟編譯器。
方舟編譯器簡單來說,就是可以將高級語言,比如Java,直接編譯成變成機器碼的技術。它最大的優勢就在於繞過了安卓系統的VM(虛擬機),從而使得應用可以像蘋果引以為傲的iOS系統一樣,轉化出的機器碼可以直接由CPU運算,從而使得運行效率大大提升。
以上就是華為方舟編譯器是什麼的內容介紹,想要了解更多相關內容請持續關注我們喲。


熱點內容
如何配置一台長久耐用的電腦 發布:2025-07-12 11:43:03 瀏覽:601
昆明桃源碼頭 發布:2025-07-12 11:38:45 瀏覽:568
大司馬腳本掛機 發布:2025-07-12 11:38:35 瀏覽:458
資料庫實時監控 發布:2025-07-12 11:31:33 瀏覽:743
vb6反編譯精靈 發布:2025-07-12 11:23:12 瀏覽:997
模擬存儲示波器 發布:2025-07-12 11:10:58 瀏覽:814
怎麼查看安卓真實運行內存 發布:2025-07-12 11:08:39 瀏覽:883
鏈接直接訪問 發布:2025-07-12 11:03:37 瀏覽:950
安卓如何把備忘錄轉為文檔 發布:2025-07-12 10:48:15 瀏覽:702
無法連接ftp主機 發布:2025-07-12 10:47:33 瀏覽:345