㈠ c編譯程序是什麼
c編譯程序是將c語言程序編譯成目標代碼程序的程序,即正確答案應該選擇D。
1、c語言是目前世界上最流行、使用最廣泛的面向過程的高級程序設計語言。 c語言對操作系統和系統使用程序以及需要對硬體進行操作的場合,用c語言明顯優於其它高級語言,許多大型應用軟體都是用c語言編寫的。
2、編譯就是利用編譯程序從源語言編寫的源程序產生目標程序的過程,其中的五個階段分別是詞法分析、語法分析、語義檢查和中間代碼生成、代碼優化、目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
(1)編譯五個階段涉及硬體擴展閱讀
c編譯程序的語言特點
對於c編譯程序來說,其語言的特點如下:
1、c語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護,而且表現能力和處理能力極強。
2、c語言具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。
3、由於c語言實現了對硬體的編程操作,因此集高級語言和低級語言的功能於一體。它既可用於系統軟體的開發,也適合於應用軟體的開發。
4、此外,c語言還具有效率高、可移植性強等特點。因此它廣泛地移植到了各類各型計算機上,從而形成了多種版本。
㈡ 編譯詳細資料大全
編譯(compilation , compile) 1、利用編譯程式從源語言編寫的源程式產生目標程式的過程。 2、用編譯程式產生目標程式的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程式把人們熟悉兆猜吵的語言換成2進制的。 編譯程式把一個兆晌源程式翻譯成目標程式的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼最佳化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程式分析,分析過程中發現有語法錯誤,給出提示信息。
編譯語言是一種以編譯器來實現的程式語言。它不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何程式語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程式的套用有關。
㈢ 什麼是java代碼的編譯與反編譯
Java代碼的編譯與反編譯
2017-02-21Hollis數盟
一、什麼是編譯
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
二、什麼是反編譯
計算機軟體反向工程(Reverseengineering)也稱為侍梁計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
三、Java類的編譯與反編譯
我們在最初學習Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。
class文件打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬體平台和操作系統的二進制文件。通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而Javaclass文件是可以運行在任何支持Java虛擬機的硬體平台和操作系統上的二進制文件。
那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程序員能看懂的Java文件)
四、什麼時候會用到反編譯
1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那麼我們可以把它反編譯成我們可以看得懂的文件。
2、學習Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時候我們想知道Java一些實現細節,我們可以藉助反編譯。
五、反編譯工具
1、javap
2、Jad:官網(牆裂推薦)
客戶端:
可以在官網下載可執行文件,找到對應的操作系統的對應版本,然後進行安裝使用。
因為我使用的是linux操作系統,所以我下載的是Linux版本的工具,這個工具下載好之後會有一個執行文件,敗吵只要在執行文件所在目錄執行./jadhelloworld.class就會在當前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼
Eclipse插件:
下載地址在官網下載插件的jar包,然後將jar包放到eclipse的plugins目錄下『在打開Eclipse,Eclipse->Window->Preferences->Java,此時你會發現會比原來多了一個JadClipse的選項,單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時文件的目錄。當然在JadClipse下還有一些子選項,如Debug,Directives等,按照默認配置察談侍即可。基本配置完畢後,我們可以查看一下class文件的默認打開方式,Eclipse->Window->Preferences->General->Editors->FileAssociations我們可以看到class文件的打開方式有兩個,JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼
㈣ 編譯程序的工作過程一般可以劃分為哪5個基本階段,還自始至終伴隨進行哪兩項工作
1、編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;中間代碼生成;代碼優化;目標代碼生成。
2、編譯程序的工作過程一般自始至終伴隨進行信息表管理和出錯處理兩項工作。
主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
(4)編譯五個階段涉及硬體擴展閱讀:
解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。因此,解釋程序並不產生目標程序,這是它和編譯程序的主要區別。解釋程序的工作過程如下:
1、由總控程序完成初始化工作。
2、依次從源程序中取出一條語句進行語法檢查,如有錯,輸出錯誤信息;如果通過了語法檢查,則根據語句翻澤成相應的指令並執行它。
3、檢查源程序是否已經全部解釋執行完畢,如果未完成則繼續解釋並執行下一條語句,直到全部語句都處理完畢。
㈤ 編譯過程包括哪幾個主要階段及每個階段的功能。
【答案】:編譯過程包括詞法分析、語法分析、語義分析和中間代碼生成、優化、目標代碼生成5個階段。
詞法分析的功能是弊則對輸入的高級語言源程序進行詞法分析,識別其中的單詞符號,確定它們的種類,交給語法分析器,即把字元串形式的源程序分解為單詞符號串形式。
語法分析的功能是在詞法分析結果的基礎上,運用語言的語法規則,對程指或序進行語法分析,識別構成程序的各類語法范疇及它們之間的層次關系,並把這種層次關系表達成語法樹的形式。
詞義分析和中間代碼生成的功能是在語法分析的基礎上,對程序進行語義分析,「理解」其含義,產生出表達程序語義的內部表達形式(中間代碼)。表達語義的中間代碼與機器租逗棚代碼相似,可以認為這一步進行了翻譯工作,把源程序翻譯成了與具體機器指令系統無關的抽象指令代碼。
優化的功能是按照等價變換的原則,對語義分析器產生的中間代碼序列進行等價變換,刪除其中多餘的操作,對耗時耗空間的代碼進行優化,以期最後得到高效的可執行代碼。
目標代碼生成的功能是把優化後的中間代碼變換成機器指令代碼,得到可在目標機器上執行的機器語言程序。
㈥ 什麼是編譯程序
編譯程序指將某一種程序設計語言寫的程序翻譯成等價的另一種語言的程序的程序, 稱之為編譯程序
編譯程序也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。
它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。
編譯程序的實現演算法較為復雜,這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系,同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。
由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。
(6)編譯五個階段涉及硬體擴展閱讀:
編譯流程分為了四個步驟:
1.預處理,生成預編譯文件(.文件)
2.編譯,生成匯編代碼(.s文件)
3.匯編,生成目標文件(.o文件)
4.鏈接,生成可執行文件
㈦ 編譯程序的各階段都涉及到什麼
預處理,詞法分析,文法分析,生成中間代碼,生成目標代碼。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
(7)編譯五個階段涉及硬體擴展閱讀:
將C語言代碼分為程序的幾個階段:
首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。
編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分。