編譯器是幹什麼的?

2021-08-20 03:32:27 字數 672 閱讀 6028

編譯器完成高階語言到匯程式設計序的解析,它的工作過程劃分為前端和後端,前端對源程式進行分析,把源程式切分成一些基本塊並生成中間語言表示,後端在分析正確無誤之後,把中間語言表示轉化為目標機器支援的組合語言

。編譯器完整的工作過程由以下階段:

中間語言有很多種表示方式,包括語法樹,字尾表示法和三位址碼等,它們需要具備的共同特點是易於生成和易於譯成目標**。

**優化階段主要是為了提高中間**的質量,以便提高目標程式的執行速度。**優化既可以在語義分析之後完成,也可以在中間**生成之後完成。

目標**生成是把優化好的中間**轉化為目標機器的指令**(彙編**)。這個過程仍然需要做很多分析、優化、變形。**生成器要對源程式中使用的變數分配暫存器,然後為每條中間語言選擇合適的機器指令,包括機器指令的操作碼和編址模式。

編譯器的前端依賴於被編譯的語言,前端還包括與這幾個部分相關的符號表操作,錯誤處理以及與目標機器無關的**優化過程。

編譯過程中和目標機器相關的部分屬於編譯程式的後端,後端與源語言無關,只和中間**有關。後端包括**優化中涉及目標機器的部分,目標**生成以及相關的符號操作及錯誤處理。

編譯器的乙個極為重要的功能是對程式中錯誤的反應,幾乎在編譯的每個階段都可以診查出錯誤。在詞法分析階段會發現字元的拼寫錯誤,在語法分析階段會檢查單詞串是否違反語言的結構規則,語義分析中,編譯器進一步檢查語法上正確但無意義的操作成分。作用

編譯器是幹什麼的?

編譯器完成高階語言到匯程式設計序的解析,它的工作過程劃分為前端和後端,前端對源程式進行分析,把源程式切分成一些基本塊並生成中間語言表示,後端在分析正確無誤之後,把中間語言表示轉化為目標機器支援的組合語言 編譯器完整的工作過程由以下階段 中間語言有很多種表示方式,包括語法樹,字尾表示法和三位址碼等,它...

FFT是幹什麼的

fft在演算法競賽中就有乙個用途 加速多項式乘法 暴言 簡單來說,形如 a0x0 a1x1 a2x2 anxna0x0 a1x1 a2x2 anxn 的代數表示式叫做多項式,可以記作f x a0x0 a1x1 a2x2 anxnf x a0x0 a1x1 a2x2 anxn,其中a0,a1,ana0...

npm是幹什麼的

網上的 npm 教程主要都在講怎麼安裝 配置和使用 npm 卻很少告訴新人 npm 是幹什麼的?為什麼要使用 npm?今天我就來講講這個話題。本文目標讀者是 不太了解 npm 的新人 老司機請繞道。社群共享 麻煩npm的思路大概是這樣的 這些可以被使用的 被叫做 包 package 這就是 npm名...