解析編譯執行反饋
『壹』 C#中所說的編譯時解析和運行時解析是什麼意思編譯時期指哪個階段運行時期指哪個階段有什麼不同
編譯時解析:編譯器或編譯命令將源代碼編譯成中間代碼時的解析
運行時解析:CLR通過即時編譯將中間代碼轉換為本地代碼時的解析
dynamic類型,在編譯時是不會解析判斷的,只在運行時進行解析。
『貳』 編譯執行和解釋執行的區別
一、主體不同
1、編譯執行:由編譯程序將目標代碼一次性編譯成目標程序,再由機器運行目標程序。
2、解釋執行:將源語言直接作為源程序輸入,解釋執行解釋一句後就提交計算機執行一句,並不形成目標程序。
二、優勢不同
1、編譯執行:相比解釋執行編譯執行效率高,佔用資源小,適合復雜程序
2、解釋執行:開發速度快,出現嚴重BUG的幾率小。
三、缺點不同
1、編譯執行:兼容性差,例如在windows平台上寫的編譯程序一般不可以在unix平台上運行。
2、解釋執行:解析需要時間,不生成目標程序而是一句一句的執行的方式會造成計算機資源的浪費,即執行效率低。
『叄』 編譯和解釋程序都是什麼
編譯(compilation , compile)
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。 編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
解釋執行
1.解釋執行不依賴於平台,因為編譯器會根據不同的平台進行解析。例如JS語言無論在windows平台還是在unix平台都可以使用。故可移植性強.
2.使用解釋執行的程序我們一般稱為解釋程序。它將源語言直接作為源程序輸入,解釋執行解釋一句後就提交計算機執行一句,並不形成目標程序。如在終端上打一條
命令或語句,解釋程序就立即將此語句解釋成一條或幾條指令並提交硬體立即執行且將執行結果反映到終端,從終端把命令打入後,就能立即得到計算結果。這種工
作方式非常適合於人通過終端設備與計算機會話.
直接點吧,編譯執行就是先將程序翻譯成機器代碼,以後運行的都是機器代碼.解釋執行就是,代碼跟著走,每運行一次,編譯一次.解釋執行也分為兩種,一種是執行一句,編譯一句,一種是編譯完全部代碼,再執行.
『肆』 怎麼用C語言把字元串形式的C代碼解析成C語言並編譯執行
恐怕不能吧,問題是程序運行的時候,動態載入字元串進行解析運行,這個是運行時的,而C語言是預編譯語言,也就是通過源代碼編譯成二進制的binary來執行的,無法動態載入吧
『伍』 解釋和編譯有什麼區別
一、與計算機的交流方式不同
1、解釋程序不產生目標代碼,它逐條地取出源程序中的語句,邊解釋,邊執行;解釋器把源代碼文件邊解釋成機器語言邊交給CPU執行。
三、開發便捷性
1、解釋程序可以隨時修改,立刻生效,改完源代碼後,直接運行看效果
2、編譯程序每次修改源代碼,都要重新編譯,生成機器碼文件
四、運行速度
1、解釋程序運行效率低,所有的代碼均需經過解釋器邊解釋變執行,速度比編譯型慢很多
2、編譯程序執行速度快,因為你的程序代碼已經翻譯成了是計算機可以理解的機器語言。
『陸』 C語言文件的編譯與執行的四個階段並分別描述
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(6)解析編譯執行反饋擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。
2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。
4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。
『柒』 解釋執行的語言相比編譯執行的語言有什麼優缺點
我自己理解的解釋執行的優點,不依賴於平台,因為每次都會根據不同的平台對語句進行解析,像JS就是一種邊解釋邊執行的語言,不管是在windows還是unix都可以直接用解釋執行的缺點,解析是需要時間的,每次都解析在很多情況下都是相當於每次都在做重復功,這樣運行的效率比較低。盡可能的減少重復功,這也是現在為什麼很流行的緩存的原因,但是解析執行這種方式就沒無法做到了編譯執行的優點,所謂的編譯執行就是先對編程進行編譯,生成一個obj文件,然後再拿來運行,它的優點恰巧就是解釋執行的缺點的反義,去除了每次都解析的問題編譯執行的缺點,也是恰巧是解釋執行優點的反義。就像C語言,你在windows下編譯的程序,拿到unix下運行,當然如果只是簡單的scanf,printf是可以的,但是像指針,內存分配,文件操作,多線程等,在一些相對復雜的系統問題就嚴重了。 更可怕的是拿源碼到unix環境下編譯通過了,但是運行卻出問題,這種問題最要人命。 所以一般的做法都是這個程序會用在什麼系統,就到什麼系統環境去開發
『捌』 編譯執行和解釋執行有什麼區別
編譯執行就像你買的《C Primer》中文版,譯者全部翻譯完(編寫代碼),拿到出版社去(編譯器),編輯們校對沒有發現錯別字(編譯),然後出版給你看,只要出版社(編譯器)工作正常,那麼就可以認為書的內容肯定沒有錯(可以正確執行);
解釋執行就像你去聽報告,老外一邊講(代碼),同聲傳譯(解釋器)一邊翻給你聽(解釋執行),如果哪一句老外講錯了(代碼出錯),同聲傳譯才卡殼,但是前面已經翻譯出去的,肯定是沒啥問題(部分正常執行了);
這么說你理解了沒有?編譯執行效率高,但靈活性差(任何修改都要重編譯),代碼保密性好;解釋執行效率低一點(這是以前的說法,現代解釋器的效率也可以非常高),靈活性好,代碼保密性差;
還有一種介於兩者之間的執行方式,半編譯執行,像大名鼎鼎的Java和C#等等,就是這種方式,是實現跨平台的優良解決方案。
『玖』 什麼是編譯,什麼是解釋,兩者有什麼優點和缺點
編譯就是全部編譯完執行,解釋就是讀一句執行一句
『拾』 編譯執行和解釋執行
建議你去找本有關編譯原理的書籍看下
它們的最主要的區別就是是否有目標代碼的生成e.g.C語言就是編譯執行的需要將源代碼翻譯成類似於匯編或機器語言的目標代碼後才能運行。而解釋程序則沒有目標代碼的生成比如VB就是典型的解釋執行的。