『壹』 計算機程序中,用高級語言編寫的程序經編譯後產生的程序叫什麼
高級語言編寫的代碼經過編譯後就是可執行程序,高級語言到可執行文件主要有七個個過程。
高級語言編譯的七個過程:
預處理,詞法分析,語法分析,語義分析,中間代碼產生,代碼優化,目標代碼產生。
下面對這幾個過程詳細講解:
1、預處理:
對原文件進行預處理,比如頭文件,導入的模塊,宏定義等進行處理;
2、詞法分析:
詞法分析是第一階段,這個階段的任務是從左到右一個字元一個字元的讀入源程序,對構成源程序的字元流進行掃描和分解,從而識別出一個個單詞。
3、語法分析:
語法分析的任務是在詞法分析的基礎上將單詞程序分解成各位語法短語。
4、語義分析:
語義分析是審查源程序有無語義錯誤,為代碼生成階段收集類型信息。
5、中間代碼生成:
在進行了上述的語法分析階段等工作之後,有的編譯程序將源程序變成一種內部表示形式,這種內部表示形式叫做中間語言或中間代碼。中間代碼生成階段要在語法和語義分析的基礎上,將源程序進一步變為一種內部表示形式,它通常易於生成、易於翻譯成目標代碼,不過不是所有的語言都必須經過這一步。
6、代碼優化:
這一階段的任務是對前一階段產生的中間代碼進行變換或進行改造,目的是使生成的目標代碼更為高效。代碼優化階段,對前階段生成的中間代碼進行變換或改造,以便生成目標代碼時更加節省時間和空間,這一工作也不是必須的。
7、目標代碼生成:
這一階段的任務是吧中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼。
『貳』 用高級語言編寫的源程序,經編譯後產生的是
目標程序。
目標程序,又稱為「目的程序」,為源程序經編譯可直接被計算機運行的機器碼集合,在計算機文件上以.obj作擴展名----由語言處理程序(匯編程序,編譯程序,解釋程序)將源程序處理(匯編,編譯,解釋)成與之等價的由機器碼構成的,計算機能夠直接運行的程序,該程序叫目標程序。
目標代碼盡管已經是機器指令,但是還不能運行,因為目標程序還沒有解決函數調用問題,需要將各個目標程序與庫函數連接,才能形成完整的可執行程序。
(2)有的編程語言源代碼經過編譯擴展閱讀
計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。
編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序。
然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯。
計算機一句句執行,並不產生目標程序。如PASCAL、FORTRAN、COBOL等高級語言執行編譯方式;BASIC語言則以執行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設計語言。
『叄』 用 C 語言編寫的源文件經過編譯,若沒有產生編譯錯誤,則系統將
本題正確答案應為B選項。
C選項為錯誤答案。
原因如下:
1、編譯程序僅僅是將源語言編寫的源程序轉換為目標程序。
2、編譯是把高級語言變成計算機可以識別的2進制語言。
3、編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。
顯然,編譯的過程中並沒有運行程序輸出結果的步驟,編譯的結果是生成目標文件(代碼)。
因此C選項為錯誤答案,B選項為正確答案。
編譯原理圖如下:
目標代碼(目標文件)生成是編譯的最後一個階段。目標代碼生成器把語法分析後或優化後的中間代碼變換成目標代碼。目標代碼有三種形式:
1、 可以立即執行的機器語言代碼,所有地址都重定位;
2、待裝配的機器語言模塊,當需要執行時,由連接裝入程序把它們和某些運行程序連接起來,轉換成能執行的機器語言代碼;
3、匯編語言代碼,須經過匯編程序匯編後,成為可執行的機器語言代碼。
目標代碼生成階段應考慮直接影響到目標代碼速度的三個問題:一是如何生成較短的目標代碼;二是如何充分利用計算機中的寄存器,減少目標代碼訪問存儲單元的次數;三是如何充分利用計算機指令系統的特點,以提高目標代碼的質量。
編譯_網路
『肆』 C語言源程序文件經過編譯連接之後生成一個後綴為_____的文件。
如果只生成一個文件,那麼這個題目答案是B。編譯(compile)後生成目標文件,後綴:.obj。也就是機器碼。
然後鏈接器(Linker) 連接生成可執行文件,後綴:.exe。最後運行命令(go),直接運行.exe文件。
(4)有的編程語言源代碼經過編譯擴展閱讀:
簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。
一個現代編譯器的主要工作流程:源代碼(source code) →預處理器(preprocessor) →編譯器(compiler) →目標代碼(object code) →鏈接器(Linker) → 可執行程序(executables)
高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。
編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。
源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言。
而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。
最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。
『伍』 高級語言編寫的源程序必須經過______才能執行
C
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類: 解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。 編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。
『陸』 C源程序經編譯形成的二進制代碼可以直接運行嗎
不可以直接運行,源程序是程序員寫給人看的,電腦執行的都是.EXE程序或者是二進制可執行代碼,所以得將源程序進行編譯連接然後才能生成可執行的程序也就是二進制的代碼。
源代碼(也稱源程序)是指未編譯的按照一定的程序設計語言規范書寫的文本文件,是一系列人類可讀的計算機語言指令。
在現代程序語言中,源代碼可以是以書籍或者磁帶的形式出現,但最為常用的格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。
計算機源代碼的最終目的是將人類可讀的文本翻譯成為計算機可以執行的二進制指令,這種過程叫做編譯,通過編譯器完成。
(6)有的編程語言源代碼經過編譯擴展閱讀:
如果按照源代碼類型區分軟體,通常被分為兩類:自由軟體和非自由軟體。自由軟體一般是不僅可以免費得到,而且公開源代碼;相對應地,非自由軟體則是不公開源代碼。所有一切通過非正常手段獲得非自由軟體源代碼的行為都將被視為非法。
對於計算機而言,並不存在真正意義上的「好」的源代碼;然而作為一個人,好的書寫習慣將決定源代碼的好壞。源代碼是否具有可讀性,成為好壞的重要標准。軟體文檔則是表明可讀性的關鍵。
對軟體進行說明,即對軟體的編寫進行說明。為數不少的初學者,甚至少數有經驗的程序員都忽視軟體說明的編寫,因為這部分不會在生成的程序中直接顯示,也不參與編譯。
但是注釋代碼對軟體的學習、分享、維護和軟體復用都有巨大的好處。因此,書寫軟體說明在業界被認為是能創造優秀程序的良好習慣,一些公司也硬性規定必須書寫。
網路-源代碼 (一系列人類可讀的計算機語言指令)
『柒』 用 C 語言編寫的源文件經過編譯,若沒有產生編譯錯誤,則系統將( )。
答案是錯誤的,系統將生成目標文件,選B。因為C語言中編譯程序是把一個源程序翻譯成目標程序的工作過程。這一過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。在語法分析過程中發現有語法錯誤,給出提示信息,沒有錯誤則生成目標文件。
C語言通過匯編把匯編語言代碼翻譯成目標機器指令。對於被翻譯系統處理的每一個C語言源程序,都將最終經過這一處理而得到相應的目標文件。目標文件中所存放的也就是與源程序等效的目標的機器語言代碼。
C語言的源文件成為目標文件的過程:
1、源文件經過預處理,生成.i的文件 (預處理器cpp)。
2、將預處理後的文件轉換成匯編語言,生成文件.s文件。
3、從匯編變為目標代碼(機器代碼)生成.o(.obj)的文件(匯編器as)。
4、連接目標代碼,生成可執行程序(連接器ld)。
『捌』 C語言源程序文件的後綴是什麼,經過編譯後生成文件的後綴是什麼經過連接後生成文件的後綴是什麼
C語言源文件後綴名是.c,編譯生成的文件後綴名是.obj,連接後可執行文件的後綴名是.exe。
源文件的後綴僅僅是為了表明該文件中保存的是某種語言的代碼(例如.c文件中保存的是C語言代碼),這樣程序員更加容易區分,編譯器也更加容易識別,它並不會導致該文件的內部格式發生改變。
(8)有的編程語言源代碼經過編譯擴展閱讀
C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大。
依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建,通過指針類型更可對內存直接定址以及對硬體進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟體。
C語言是普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用,還具有匯編語言的優點。
『玖』 一個C語言源程序經過編譯後就可以執行了 這句話對嗎
對的,C語言是先編譯後執行,一般只要不出錯誤,編譯完就可以執行力。有時候還要考慮是否跨平台。
『拾』 c語言中的源程序必須經過編譯連接生成可執行程序才能運行,這句話是對不對
哥們,這么理解是對的,不過感覺有點表面。
建議看看計算機一些原理,像你說的這個問題我會想到,計算機最終只能識別二進制碼,
所以其實不管我們一切啥語言,最終都是通過編譯器編譯成二進制碼,計算機才能識別
而去運行,而c語言編寫的程序,肯定是要經過一系列的編譯,鏈接,生成可執行的文件。
在windows系統中,執行文件都是.exe為擴展名的。不過在linux系統中就不一樣了,linux
系統並不區分擴展名,所以也就無所謂什麼.exe之類的文件,只要知道最終生成可執行的
二進制文件就可以了。