編譯執行

編譯執行

編譯執行是一種計算機語言的執行方式。由編譯程序將目標代碼一次性編譯成目標程序,再由機器運行目標程序如:PASCAL,C,C++等語言。效率高於解釋執行。

具體介紹


使用編譯執行的程序一般稱為編譯程序,這是一類很重要的語言處理程序,它把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,進行翻譯轉換,產生出機器語言的目標程序,然後再讓計算機去執行這個目標程序,得到計算結果。
編譯程序工作時,先分析,后綜合,從而得到目標程序。所謂分析,是指詞法分析和語法分析;所謂綜合是指代碼優化,存儲分配和代碼生成。為了完成這些分析綜合任務,編譯程序採用對源程序進行多次掃描的辦法,每次掃描集中完成一項或幾項任務,也有一項任務分散到幾次掃描去完成的。
下面舉一個四遍掃描的例子:第一遍掃描做詞法分析;第二遍掃描做語法分析;第三遍掃描做代碼優化和存儲分配;第四遍掃描做代碼生成。
值得一提的是,大多數的編譯程序直接產生機器語言的目標代碼,形成可執行的目標文件,但也有的編譯程序則先產生彙編語言一級的符號代碼文件,然後再調用彙編程序進行翻譯加工處理,最後產生可執行的機器語言目標文件。
在實際應用中,對於需要經常使用的有大量計算的大型題目,採用招待速度較快的編譯型的高級語言較好,雖然編譯過程本身較為複雜,但一旦形成目標文件,以後可多次使用。相反,對於小型題目或計算簡單不太費機時的題目,則多選用解釋型的會話式高級語言,如BASIC,這樣可以大大縮短編程及調試的時間

優缺點


優點

相比解釋執行編譯執行效率高,佔用資源小,適合複雜程序

缺點

兼容性差,例如在windows平台上寫的編譯程序一般不可以在unix平台上運行。當然,如果只是簡單的scanf,printf是可以的,但是像指針,內存分配,文件操作,多線程等,在一些相對複雜的系統問題就嚴重了。更可怕的是拿源碼到unix環境下編譯通過了,但是運行卻出問題,這種問題最要人命。所以一般的做法都是這個程序會用在什麼系統,就到什麼系統環境去開發