⑴ 用高級語言編寫的源程序必須經過__ ___轉化為等價的二進制代碼程序,才能夠在計算機中運行。
編譯和鏈接。
編譯:
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。櫻耐
2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯枝鋒程序把人們熟悉的語言換成2進制的。
編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
(1)高級語言程序必須經過編譯嗎擴展閱讀
源程序中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表猛頌晌它自身的值了。若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。
詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。
⑵ 用高級語言編寫的源程序必須經過編譯,產生目標程序後才能運行,這句話對嗎
目標程序的運行依賴於特定的操作環境。通常情況下,源程序通過編譯器轉換成目標程序,但這僅僅是程序執行的第一步。目標程序必須進一步與庫文件、資源文件等進行鏈接,最終生成可執行文件,才能在計算機上順利運行。這一步驟對於許多高級語言如Java和C#尤為重要。Java和C#的程序在編譯後生成的是位元組碼,位元組碼需要運行時環境(JVM或CLR)解釋執行,因此不是真正的目標程序。
以Java為例,Java源代碼經過編譯器編譯後得到的是位元組碼文件,位元組碼文件並非可以直接運行的機器碼,而是需要在Java虛擬機(JVM)中解釋執行。這個過程確保了Java程序能夠在任何支持JVM的平台上運行,而無需重新編譯。同樣,C#程序編譯後生成的是CIL(中間語言)代碼,也需要CLR(公共語言運行時)來解釋執行。
因此,盡管編譯過程是程序開發中不可或缺的一環,但僅僅通過編譯並不能使程序具備運行條件。目標程序的運行需要經過鏈接和解釋執行的過程。無論是Java的位元組碼還是C#的CIL代碼,它們都需要相應的虛擬機環境來運行,這與傳統的機器碼目標程序存在本質區別。
總之,對於像Java和C#這樣的高級語言,編譯後生成的位元組碼或CIL代碼不是目標程序,它們必須在相應的運行時環境中運行。因此,上述說法並不完全准確,正確的理解應該是源程序經過編譯後生成的目標程序,還需進一步鏈接和解釋執行才能運行。