欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

高級語言程序的兩種處理方式——編譯和解釋

系統(tǒng) 1958 0

編譯方式


? ? ? ? 編譯程序的功能就是把高級語言書寫的源程序翻譯成與之等價的目標程序(匯編語言或機器語言)。


編譯程序的工作過程

高級語言程序的兩種處理方式——編譯和解釋


詞法分析


? ? ? ? 在詞法分析階段,源程序可以簡單的看做是一個多行的字符串。詞法分析階段是編譯過程的第一階段,主要任務是對源程序從前到后(從左到右)逐個字符進行掃描,從中識別出一個個“單詞”符號。詞法分析程序輸出的”單詞“常采用二元組的方式,即單詞類別和單詞自身的值。詞法分析過程依據(jù)的語言的此法規(guī)則,即描述“單詞”結(jié)構(gòu)的規(guī)則。

? ? 詞法分析器一般來說有兩種方法構(gòu)造:手工構(gòu)造和自動生成。手工構(gòu)造可使用狀態(tài)圖進行工作,自動生成使用確定的有限自動機來實現(xiàn)。

? ? 詞法分析器的功能輸入源程序,按照構(gòu)詞規(guī)則分解成一系列單詞符號。單詞是語言中具有獨立意義的最小單位,包括:

? ? ? ?(1)關鍵字 是由程序語言定義的具有固定意義的標識符。

? ? ? ?(2)標識符 用來表示各種名字,如變量名,數(shù)組名,過程名等等。

? ? ? ?(3)常數(shù)? 常數(shù)的類型一般有整型、實型、布爾型、文字型等。

? ? ? ?(4)運算符 如+、-、*、/等等。

? ? ? ?(5)界符? 如逗號、分號、括號、等等。


語法分析


? ? ? ? 編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規(guī)則的語法單位,如表達式、賦值、循環(huán)等,最后看是否構(gòu)成一個符合各類語法的構(gòu)成規(guī)則,按該語言使用的語法規(guī)則分析檢查每條語句是否有正確的邏輯結(jié)構(gòu),程序是最終的一個語法單位。

? ? 語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發(fā),向下推導,推出句子。而自下而上分析法采用的是移進歸約法,基本思想是:用一個寄存符號的先進后

出棧,把輸入符號一個一個地移進棧里,當棧頂形成某個產(chǎn)生式的一個候選式時,即把棧頂?shù)倪@一部分歸約成該產(chǎn)生式的左鄰符號。

? ? 語法分析只考慮構(gòu)成該句子的語法單位是否符合語法規(guī)則。例如在分析除法表達式時在語法分析階段只分析運算符左右兩邊是否為變量、常量、表達式等,而不去管除數(shù)是否為 0 。


語義分析


? ? ? ? 語義分析階段主要是檢查源程序是否存在語義錯誤,并收集類型信息供后面的代碼生成階段使用,只有語法和語義都正確的源程序才能翻譯成正確的目標代碼。語義分析的主要工作是進行各類型分析和檢查。

? ? ?比如語義分析的一個工作是進行類型審查,審查每個算符是否具有語言規(guī)范允許的運算對象,當不符合語言規(guī)范時,編譯程序應報告錯誤。如有的編譯程序要對實數(shù)用作數(shù)組下標的情況報告錯誤。再如分析除法表達式時在語義分析階段就要分析該表達式的除數(shù)是否為零等。

? ? ?在高級程序設計語言翻譯中,語義分析階段的工作不與目標機器的體系結(jié)構(gòu)密切相關,而目標代碼生成階段的工作與目標機器的體系結(jié)構(gòu)密切相關。


中間代碼生成


? ? ? ? 中間代碼生成階段的工作是根據(jù)語義分析的輸出生成中間代碼。中間代碼是一種簡單且含義明確的記號系統(tǒng),可以有若干種形式,常見的有 逆波蘭記號、四元式、三元式和樹 。他們的共同特征是代碼的方式與具體的機器無關。中間語言的復雜性介于源程序語言和機器語言之間。中間代碼實際上起一個編譯器前段與后端分水嶺的作用,目的是 便于編譯器的開發(fā)和移植和代碼的優(yōu)化。它既與機器指令的結(jié)構(gòu)相近,又與具體的機器無關 并不是所有的編譯程序都生成中間代碼,一般快速編譯程序直接生成目標代碼,沒有將中間代碼翻譯成目標代碼的額外開銷 。

?

代碼優(yōu)化


? ? ? ? 代碼優(yōu)化是指對程序進行多種等價變換,使得從變換后的程序出發(fā),能生成更有效的目標代碼。所謂等價,是指不改變程序的運行結(jié)果。所謂有效,主要指目標代碼運行時間較短,以及占用的存儲空間較小。這種變換稱為優(yōu)化。

? ? ?兩類優(yōu)化:一類是對語法分析后的中間代碼進行優(yōu)化,它不依賴于具體的計算機;另一類是在生成目標代碼時進行的,它在很大程度上依賴于具體的計算機。對于前一類優(yōu)化,根據(jù)它所涉及的程序范圍可分為 局部優(yōu)化 、 循環(huán)優(yōu)化 全局優(yōu)化 三個不同的級別。

?

目標代碼生成


? ? ? ? 目標代碼生成是編譯的最后一個階段。目標代碼生成器把語法分析后或優(yōu)化后的中間代碼變換成目標代碼。 目標代碼生成階段的工作與目標機器的體系結(jié)構(gòu)密切相關。 目標代碼有三種形式:

? ? ? ? ?① 可以立即執(zhí)行的機器語言代碼,所有地址都重定位;

? ? ? ? ?② 待裝配的機器語言模塊,當需要執(zhí)行時,由連接裝入程序把它們和某些運行程序連接起來,轉(zhuǎn)換成能執(zhí)行的機器語言代碼;

? ? ? ? ?③ 匯編語言代碼,須經(jīng)過匯編程序匯編后,成為可執(zhí)行的機器語言代碼。

? ? 目標代碼生成階段應考慮直接影響到目標代碼速度的三個問題:一是如何生成較短的目標代碼;二是如何充分利用計算機中的寄存器,減少目標代碼訪問存儲單元的次數(shù);三是如何充分利用計算機指令系統(tǒng)的特點,以提高目標代碼的質(zhì)量。

?

出錯處理

???????? ? ? 用戶編寫的源程序不可避免的會有一些錯誤,這些錯誤大致可以分為 靜態(tài)錯誤 動態(tài)錯誤 。動態(tài)錯誤也稱動態(tài)語義錯誤,它們發(fā)生在程序運行時,例如除數(shù)為 0 、引用數(shù)組元素下標錯誤等。靜態(tài)錯誤是之編譯階段發(fā)現(xiàn)的程序錯誤,可分為語法錯誤和靜態(tài)語義錯誤,如單詞拼寫錯誤、標點符號錯誤、表達式缺少操作數(shù)、括號不匹配等有關語言結(jié)構(gòu)上的錯誤稱為語法錯誤,而語義分析時發(fā)現(xiàn)的運算符與運算對象不合法等錯誤屬于靜態(tài)語義錯誤。 語義分析階段主要檢查源程序是否包含靜態(tài)語義錯誤,而一般的編譯器很難檢查出動態(tài)語義錯誤 。

?

解釋方式


? ? ? ? 解釋程序是另一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行時直接執(zhí)行源程序或源程序的內(nèi)部形式,即解釋程序不產(chǎn)生源程序的目標程序,這點是它與編譯程序的主要區(qū)別。

? ? ?解釋程序通常可以分為兩部分:

? ? ? ? 第一部分是分析部分,包括通常的詞法分析、語法分析和語義分析程序,經(jīng)語義分析后把源程序翻譯成中間代碼,中間代碼常用逆波蘭式表示。

? ? ? ? 第二部分是解釋部分,用來對第一部分產(chǎn)生的中間代碼進行解釋執(zhí)行。


解釋程序?qū)崿F(xiàn)高級語言的三種方式

? 高級語言程序的兩種處理方式——編譯和解釋


編譯與解釋的區(qū)別


? ? ? ? ? 編譯和解釋是語言處理的兩種基本方式。編譯過程包括詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化和目標代碼生成等階段,以及符號表管理和出錯處理模塊。解釋過程在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但是在運行用戶程序時,它直接執(zhí)行源程序或源程序的內(nèi)部形式。

? ? ?這兩種語言處理程序的根本區(qū)別是:在編譯方式下,機器上運行的是與源程序等價的目標程序,源程序和編譯程序都不再參與目標程序的執(zhí)行過程;而在解釋方式下,解釋程序和源程序(或其某種等價表示)要參與到程序的運行過程中,運行程序的控制權(quán)在解釋程序。解釋器翻譯源程序時不產(chǎn)生獨立的目標程序,而編譯器則需將源程序翻譯成獨立的目標程序。

?

高級語言程序的兩種處理方式——編譯和解釋


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 偷拍亚洲制服另类无码专区 | 日本久久高清视频 | 亚洲精品一区二区三区不 | 欧美日韩视频在线第一区二区三区 | 久久久久久久久久久久久久av | 免费观看性欧美一级 | 日本不卡一区二区三区在线观看 | 国产成人在线影院 | 美女久草 | 久草视频在线播放 | 哪里能看毛片 | 99久久免费观看 | 久草资源网站 | 国产福利不卡视频在免费 | 麻豆网站入口 | 亚洲精品不卡 | 成人免费视频观看视频 | 97中文| 天天操天天插天天干 | 婷婷玖玖 | 国产99久久精品一区二区永久免费 | 久久国产精品久久 | 色综合久久精品中文字幕首页 | 五月综合激情婷婷六月 | 超碰人人操 | 大学生一级毛片全黄真人 | 永久精品 | 美女爽到呻吟久久久久 | 久久久蜜桃 | 日韩视频观看 | 黄色羞羞视频在线观看 | 亚洲综合色婷婷在线观看 | 久久国产精品久久久久久久久久 | 久久久精品视频免费观看 | 亚洲欧美在线视频免费 | 久久久久久久久久免观看 | 欧美在线免费 | 国产福利自产拍在线观看 | 天天操夜夜艹 | 精品视频在线观看 | 97国产精品 |