编译程序基本原理的知识笔记
編譯程序的作用是把某高級語言書寫的源程序翻譯成與之等價(jià)的目標(biāo)程序。
? ? ? ?? ? ? ?
1、編譯過程
1.1 詞法分析
編譯過程的第一階段主要任務(wù)是對源程序從前往后(從左往右)逐個(gè)字符掃描,從中識(shí)別出一個(gè)個(gè)單詞符號。“單詞”是程序設(shè)計(jì)語言的基本語法單位,如關(guān)鍵字、標(biāo)識(shí)符等。
1.2 語法分析
語法分析的任務(wù)是在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則將單詞符號序列分解成各類語法單位,比如表達(dá)式、語句。
語法規(guī)則是各類語法單位的構(gòu)成規(guī)則。
詞法分析和語法分析的本質(zhì)都是對源程序的結(jié)構(gòu)進(jìn)行分析。
1.3 語義分析
語義分析階段分析各語法的含義,檢查源程序是否包含靜態(tài)語義錯(cuò)誤,并收集類型信息供后面的代碼生成階段使用。只有語法和語義都正確的源程序才能正確翻譯成目標(biāo)程序。
語義分析的主要工作進(jìn)行類型分析和檢查。
1.4 中間代碼生成
中間代碼生成階段的主要任務(wù)是工作是根據(jù)語義分析的輸出生成中間代碼。最常用的中間代碼是與匯編語法的指令非常相似的三地址碼,常采用四元式。
格式為:(運(yùn)算符,運(yùn)算對象1,運(yùn)算對象2,運(yùn)算結(jié)果)
語義分析和中間代碼的依據(jù)是語言的語義規(guī)則。
1.5 代碼優(yōu)化
由于編譯器翻譯中間代碼的過程是機(jī)械式的、固定模式進(jìn)行的,因此生成的中間代碼往往在時(shí)間上、空間方面效率較差。如果需要生成高效率的目標(biāo)代碼,就必須進(jìn)行優(yōu)化。
1.6 目標(biāo)代碼生成
主要任務(wù)是把中間代碼變換成特定機(jī)器上的絕對指令代碼、可重定位的指令代碼或匯編指令代碼。
1.7 符號表管理
符號表的作用是記錄源程序中各符號的必要信息,用來輔助語義的正確檢查和代碼生成。
1.8 出錯(cuò)處理
源程序不可避免會(huì)出現(xiàn)一些錯(cuò)誤。分為兩類:靜態(tài)錯(cuò)誤和動(dòng)態(tài)錯(cuò)誤。
靜態(tài)錯(cuò)誤:編譯階段發(fā)現(xiàn)的錯(cuò)誤。比如:單詞拼寫錯(cuò)誤、標(biāo)點(diǎn)符號錯(cuò)誤。
動(dòng)態(tài)錯(cuò)誤:在程序運(yùn)行時(shí)發(fā)生的錯(cuò)誤。比如 零做除數(shù)等。
?
IT技術(shù)分享社區(qū)
個(gè)人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識(shí)硬件:斷路器、接觸器、繼電器基礎(chǔ)知識(shí)
總結(jié)
以上是生活随笔為你收集整理的编译程序基本原理的知识笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [资源]基于 Pytorch 的 Tor
- 下一篇: 如何用计算机制作思维导向图,电脑怎样制作