首頁(yè)考試吧論壇Exam8視線(xiàn)考試商城網(wǎng)絡(luò )課程模擬考試考友錄實(shí)用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓 自學(xué)考試 成人高考
四 六 級
GRE考試
攻碩英語(yǔ)
零起點(diǎn)日語(yǔ)
職稱(chēng)英語(yǔ)
口譯筆譯
申碩英語(yǔ)
零起點(diǎn)韓語(yǔ)
商務(wù)英語(yǔ)
日語(yǔ)等級
GMAT考試
公共英語(yǔ)
職稱(chēng)日語(yǔ)
新概念英語(yǔ)
專(zhuān)四專(zhuān)八
博思考試
零起點(diǎn)英語(yǔ)
托?荚
托業(yè)考試
零起點(diǎn)法語(yǔ)
雅思考試
成人英語(yǔ)三級
零起點(diǎn)德語(yǔ)
等級考試
華為認證
水平考試
Java認證
職稱(chēng)計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務(wù) 員
導游考試
物 流 師
出版資格
單 證 員
報 關(guān) 員
外 銷(xiāo) 員
價(jià)格鑒證
網(wǎng)絡(luò )編輯
駕 駛 員
報檢員
法律顧問(wèn)
管理咨詢(xún)
企業(yè)培訓
社會(huì )工作者
銀行從業(yè)
教師資格
營(yíng)養師
保險從業(yè)
普 通 話(huà)
證券從業(yè)
跟 單 員
秘書(shū)資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢(xún)
營(yíng) 銷(xiāo) 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業(yè)水平
衛生資格 執業(yè)醫師 執業(yè)藥師 執業(yè)護士
會(huì )計從業(yè)資格
基金從業(yè)資格
統計從業(yè)資格
經(jīng)濟師
精算師
統計師
會(huì )計職稱(chēng)
法律顧問(wèn)
ACCA考試
注冊會(huì )計師
資產(chǎn)評估師
審計師考試
高級會(huì )計師
注冊稅務(wù)師
國際內審師
理財規劃師
美國注冊會(huì )計師
一級建造師
安全工程師
設備監理師
公路監理師
公路造價(jià)師
二級建造師
招標師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
造價(jià)員考試
注冊計量師
環(huán)保工程師
化工工程師
咨詢(xún)工程師
結構工程師
城市規劃師
材料員考試
監理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評價(jià)師
房地產(chǎn)經(jīng)紀人
投資項目管理師
環(huán)境影響評價(jià)師
土地登記代理人
繽紛校園 實(shí)用文檔 英語(yǔ)學(xué)習 作文大全 求職招聘 論文下載 訪(fǎng)談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專(zhuān)項輔導
軟件水平考試交流互動(dòng)
軟件水平考試交流互動(dòng)
您現在的位置: 考試吧 > 軟件水平考試 > 復習資料 > 系統分析師 > 正文

2012年軟考系統分析師經(jīng)典教程:編譯程序

  2.4 編譯程序

  把用高級程序設計語(yǔ)言書(shū)寫(xiě)的源程序,翻譯成等價(jià)的計算機匯編語(yǔ)言或機器語(yǔ)言書(shū)寫(xiě)的目標程序的翻譯程序。編譯程序屬于采用生成性實(shí)現途徑實(shí)現的翻譯程序。它以高級程序設計語(yǔ)言書(shū)寫(xiě)的源程序作為輸入,而以匯編語(yǔ)言或機器語(yǔ)言表示的目標程序作為輸出。編譯出的目標程序通常還要經(jīng)歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。編譯程序的實(shí)現算法較為復雜。這是因為它所翻譯的語(yǔ)句與目標語(yǔ)言的指令不是一一對應關(guān)系,而是一多對應關(guān)系;同時(shí)也因為它要處理遞歸調用、動(dòng)態(tài)存儲分配、多種數據類(lèi)型,以及語(yǔ)句間的緊密依賴(lài)關(guān)系。但是,由于高級程序設計語(yǔ)言書(shū)寫(xiě)的程序具有易讀、易移植和表達能力強等特點(diǎn),編譯程序廣泛地用于翻譯規模較大、復雜性較高、且需要高效運行的高級語(yǔ)言書(shū)寫(xiě)的源程序。

  功能

  編譯程序的基本功能是把源程序翻譯成目標程序。但是,作為一個(gè)具有實(shí)際應用價(jià)值的編譯系統,除了基本功能之外,還應具備語(yǔ)法檢查、調試措施、修改手段、覆蓋處理、目標程序優(yōu)化、不同語(yǔ)言合用以及人-機聯(lián)系等重要功能。

 、僬Z(yǔ)法檢查:檢查源程序是否合乎語(yǔ)法。如果不符合語(yǔ)法,編譯程序要指出語(yǔ)法錯誤的部位、性質(zhì)和有關(guān)信息。編譯程序應使用戶(hù)一次上機,能夠盡可能多地查出錯誤。

 、谡{試措施:檢查源程序是否合乎設計者的意圖。為此,要求編譯程序在編譯出的目標程序中安置一些輸出指令編譯程序,以便在目標程序運行時(shí)能輸出程序動(dòng)態(tài)執行情況的信息,如變量值的更改、程序執行時(shí)所經(jīng)歷的線(xiàn)路等。這些信息有助于用戶(hù)核實(shí)和驗證源程序是否表達了算法要求。

 、坌薷氖侄危簽橛脩(hù)提供簡(jiǎn)便的修改源程序的手段。編譯程序通常要提供批量修改手段(用于修改數量較大或臨時(shí)不易修改的錯誤)和現場(chǎng)修改手段(用于運行時(shí)修改數量較少、臨時(shí)易改的錯誤)。

 、芨采w處理:主要是為處理程序長(cháng)、數據量大的大型問(wèn)題程序而設置的;舅枷胧亲屢恍┏绦蚨魏蛿祿媚承┐鎯^,其中只存放當前要用的程序或數據;其余暫時(shí)不用的程序和數據,先存放在磁盤(pán)等輔助存儲器中,待需要時(shí)動(dòng)態(tài)地調入。

 、菽繕顺绦騼(yōu)化:提高目標程序的質(zhì)量,即占用的存儲空間少,程序的運行時(shí)間短。依據優(yōu)化目標的不同,編譯程序可選擇實(shí)現表達式優(yōu)化、循環(huán)優(yōu)化或程序全局優(yōu)化。目標程序優(yōu)化有的在源程序級上進(jìn)行,有的在目標程序級上進(jìn)行。

 、薏煌Z(yǔ)言合用:其功能有助于用戶(hù)利用多種程序設計語(yǔ)言編寫(xiě)應用程序或套用已有的不同語(yǔ)言書(shū)寫(xiě)的程序模塊。最為常見(jiàn)的是高級語(yǔ)言和匯編語(yǔ)言的合用。這不但可以彌補高級語(yǔ)言難于表達某些非數值加工操作或直接控制、訪(fǎng)問(wèn)外圍設備和硬件寄存器之不足,而且還有利于用匯編語(yǔ)言編寫(xiě)核心部分程序,以提高運行效率。

 、呷-機聯(lián)系:確定編譯程序實(shí)現方案時(shí)達到精心設計的功能。目的是便于用戶(hù)在編譯和運行階段及時(shí)了解內部工作情況,有效地監督、控制系統的運行。

  早期編譯程序的實(shí)現方案,是把上述各項功能完全收納在編譯程序之中。然而,習慣做法是在操作系統的支持下,配置調試程序、編輯程序和連接裝配程序,用以協(xié)助實(shí)現程序的調試、修改、覆蓋處理,以及不同語(yǔ)言合用功能。但在設計編譯程序時(shí),仍須精心考慮如何與這些子系統銜接等問(wèn)題。

  工作過(guò)程

  編譯程序必須分析源程序,然后綜合成目標程序。首先,檢查源程序的正確性,并把它分解成若干基本成分;其次,再根據這些基本成分建立相應等價(jià)的目標程序部分。為了完成這些工作,編譯程序要在分析階段建立一些表格,改造源程序為中間語(yǔ)言形式,以便在分析和綜合時(shí)易于引用和加工。

  數據結構 分析和綜合時(shí)所用的主要數據結構,包括符號表、常數表和中間語(yǔ)言程序。符號表由源程序中所用的標識符連同它們的屬性組成,其中屬性包括種類(lèi)(如變量、數組、結構、函數、過(guò)程等)、類(lèi)型(如整型、實(shí)型、字符串、復型、標號等),以及目標程序所需的其他信息。常數表由源程序中用的常數組成,其中包括常數的機內表示,以及分配給它們的目標程序地址。中間語(yǔ)言程序是將源程序翻譯為目標程序前引入的一種中間形式的程序,其表示形式的選擇取決于編譯程序以后如何使用和加工它。常用的中間語(yǔ)言形式有波蘭表示、三元組、四元組以及間接三元組等。

  分析部分 源程序的分析是經(jīng)過(guò)詞法分析、語(yǔ)法分析和語(yǔ)義分析三個(gè)步驟實(shí)現的。詞法分析由詞法分析程序(又稱(chēng)為掃描程序)完成,其任務(wù)是識別單詞(即標識符、常數、保留字,以及各種運算符、標點(diǎn)符號等)、造符號表和常數表,以及將源程序換碼為編譯程序易于分析和加工的內部形式。語(yǔ)法分析程序是編譯程序的核心部分,其主要任務(wù)是根據語(yǔ)言的語(yǔ)法規則,檢查源程序是否合乎語(yǔ)法。如不合乎語(yǔ)法,則輸出語(yǔ)法出錯信息;如合乎語(yǔ)法,則分解源程序的語(yǔ)法結構,構造中間語(yǔ)言形式的內部程序。語(yǔ)法分析的目的是掌握單詞是怎樣組成語(yǔ)句的,以及語(yǔ)句又是如何組成程序的。語(yǔ)義分析程序是進(jìn)一步檢查合法程序結構的語(yǔ)義正確性,其目的是保證標識符和常數的正確使用,把必要的信息收集和保存到符號表或中間語(yǔ)言程序中,并進(jìn)行相應的語(yǔ)義處理。

  編譯程序的功能是把某些高級語(yǔ)言書(shū)寫(xiě)的源程序翻譯成與之等價(jià)的低級語(yǔ)言(匯編語(yǔ)言或者機器語(yǔ)言)的目標程序。其過(guò)程可以分成6個(gè)階段。

 過(guò)程階段

任務(wù)及其特點(diǎn)

詞法分析階段

該階段的任務(wù)是從左到右逐個(gè)字符的讀入源程序,識別出一個(gè)個(gè)的單詞符號。 
詞法分析所依據的是語(yǔ)言的詞法規則,即描述單詞結構的規則。詞法規則可用3型文法(正規文法)或正規式來(lái)描述,有限自動(dòng)機能識別正規文法所定義的語(yǔ)言和正規式所表示的集合。

語(yǔ)法分析階段

該階段任務(wù)是在詞法分析的基礎上將單詞符號序列分解成各類(lèi)語(yǔ)法單元。
語(yǔ)法分析所依據的是語(yǔ)言的語(yǔ)法規則,即描述程序結構的規則。語(yǔ)法分析有自頂向下分析(遞歸子程序分析法LL1)和自底向上分析(LR和算符優(yōu)先分析)兩大類(lèi)。

語(yǔ)義分析階段

審查源程序有無(wú)語(yǔ)義錯誤,為代碼生成階段收集類(lèi)型信息。

中間代碼生成階段

在進(jìn)行了上述的語(yǔ)法分析和語(yǔ)義分析階段的工作之后,有的編譯程序將源程序變成一種內部表示形式,這種內部表示形式叫做中間語(yǔ)言或中間代碼。所謂“中間代碼”是一種簡(jiǎn)單、含義明確的記號系統。

代碼優(yōu)化階段

該階段是對前階段產(chǎn)生的中間代碼進(jìn)行變換改造,目的是使生成的目標代碼更為高級,即省時(shí)間和省空間。優(yōu)化所依據的原則是程序的等價(jià)變換規則。

目標代碼生成階段

此階段使把中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼。

  其中,詞法分析和語(yǔ)法分析本質(zhì)上都是對源程序的結構進(jìn)行分析。而語(yǔ)義分析和中間代碼生成所依據的是語(yǔ)言的語(yǔ)義規則,一般采用語(yǔ)法指導翻譯和中間代碼生成。

  自底向上分析法采用一個(gè)后進(jìn)先出棧的數據結構,是移進(jìn)-規約過(guò)程(找出句柄)。

  自頂向下分析法必須改寫(xiě)文法,采用預測分析法,要消除左遞歸和提取公共左因子。

  編譯過(guò)程6個(gè)階段的任務(wù)以及表格管理和出錯處理工作可分別由幾個(gè)模塊或程序完成,他們分別稱(chēng)作詞法分析程序、語(yǔ)法分析程序、語(yǔ)義分析程序,中間代碼生成程序、代碼優(yōu)化程序、目標代碼生成程序、表格管理程序和出錯處理程序。

  相關(guān)推薦:

  2012年軟考系統分析師考試60天完美復習計劃

  2012年軟件水平考試網(wǎng)絡(luò )工程師章節筆記講義匯總

  2012年上半年軟件水平考試成績(jì)查詢(xún)匯總

文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會(huì )及時(shí)處理。如轉載本軟件水平考試網(wǎng)內容,請注明出處。
午夜夜伦鲁鲁片免费无码_亚洲国产男人本色在线观看的a站_国产极品粉嫩馒头一线天免费_亚洲А∨天堂2021无码