編譯器設計中有哪些型別的翻譯器?
翻譯器是一種程式語言處理器,它將計算機程式從一種語言轉換為另一種語言。它接收用源程式編寫的程式,並將其轉換為機器程式。它可以在翻譯過程中查詢和檢測錯誤。
翻譯器有多種型別,如下所示:
編譯器 - 編譯器是一個程式,它將高階語言(例如 C、C++ 和 Java)轉換為低階語言(目標程式或機器程式)。編譯器使用不同的階段將高階語言轉換為低階語言。客戶輸入的字元流將經過多個編譯階段,最終將提供目標語言。
預處理器 - 預處理器是一個在原始碼透過編譯器之前處理原始碼的程式。它可以在所謂的預處理器命令列或指令的控制下執行。
彙編器 - 彙編器是一種翻譯器,它將組合語言程式轉換為計算機的等效機器語言程式。彙編器提供了比計算機的 0 和 1 更友好的表示,簡化了程式的編寫和閱讀。
彙編器讀取單個組合語言源文件,並建立一個目標文件,其中包括機器指令和支援將各種目標檔案合併到程式中的簿記資料。
直譯器 - 直譯器是一個直接執行程式設計程式碼而不是僅將其轉換為其他格式的程式。它逐個翻譯和執行程式語言語句。
宏 - 許多組合語言都支援“宏”功能,其中宏語句將在轉換為機器程式碼之前轉換為一系列組合語言語句以及其他宏語句。因此,宏功能是一種文字替換效率。
連結器 - 連結器是一個計算機程式,它連線和組合多個目標檔案以建立一個可執行檔案。所有這些檔案可能都由單獨的彙編器編譯。連結器的功能是檢查和查詢程式中引用的模組/例程,並確定將載入這些程式碼的記憶體位置,從而建立程式指令具有絕對引用。
載入器 - 載入器是作業系統的一個組成部分,負責將可執行檔案載入到記憶體中並執行它們。它可以計算程式的大小(指令和資料),併為其生成記憶體空間。它可以初始化多個暫存器以啟動執行。
它為程式建立一個新的地址空間。這個地址空間很大,可以影響文字和資料段以及堆疊段。它可以將指令和資料從可執行檔案重複到新的地址空間。