- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 電腦軟體 5-1 系統程式 5-2 作業系統功能簡介 5-3 作業系統的演進發展 5-4 單一程式處理 5-5 多元程式處理 一部電腦的完整定義,包含了硬體(hardware)和 軟體(software) 兩部份。 「電腦軟體」,由各種程式語言所撰寫完成。電腦軟體可以分為「系統軟體」(System Program)與「應用軟體」(Application System)兩大類,如下圖所示 5-1 系統程式 系統程式,是驅動電腦硬體工作的相關軟體及韌體(Firemware)程式,主要功用負責電腦中資源的分配與管理,並擔任軟體與硬體間的介面。 工作內容包括啟動、載入、監督管理軟體、執行輸出入設備與檔案存取、記憶體管理等,可以區分為編譯程式、載入程式、巨集處理程式、組合程式與作業系統五種, Tips 韌體大多針對特定主機設備所編寫,是驅動硬體裝置的最基本程式,也就是其本身具備程式碼的硬體裝置。 通常將程式碼燒錄在主機板上的唯讀記憶體內以供其他程式連結,並透過他來存取週邊設備。 翻譯程式 翻譯程式就是將程式設計師所寫的高階語言原始程式翻譯成能在電腦系統中執行的機器碼形式,例如機器語言、可執行檔或目的碼。 不同的程式語言須配置不同的翻譯程式,也是寫好一個原始程式(Source Program),並儲存檔案後,就交由翻譯程式處理。 翻譯器 翻譯器會檢查程式是否有「語法錯誤」(Syntax Error)和「語義錯誤」(Semantic Error)。沒有任何錯誤後,接著把程式內每個句子轉成更低階的語言,通常是「組合語言」形式。 接著再由組譯器就會把每個組合語言句子轉成稱為「目的碼」(Object Code)的「機械語言」,最後經由連結與載入過程,轉成可在電腦上執行的檔案。 翻譯程式過程三種作業階段 語彙分析階段 語法分析與解構階段 最佳化與目的碼輸出階段 語彙分析階段 將程式碼中所有字元逐字讀入,並分解為單語(token)形式,並建立文字表(Literal Table)、符號表(Symbol Table)、識別字表(Identifier Table)等,並將原先所定義的各種符號(如運算子、識別字、變數等)分析出來。 因此這個階段也稱為「掃描器」(Scanner)或「語彙分析器」(Lexical Analyzer)。 語法分析與解構階段 將程式碼中讀入的單語組合成合乎程式語言語法的架構,並呼叫相對應的函式來轉換成「中間形式矩陣」(Intermediate Matrix),同時在識別表中加入相關訊息,例如條件判斷、迴圈控制、運算式計算、字串連結、陣列存取等語法結構判斷。 這個階段也稱為「剖析器」(Parser) 最佳化與目的碼輸出階段 將剖析器所產生的矩陣進行最佳化工作,目的是節省儲存空間與執行時間。 包括迴路最佳化、布林式最佳化與運算式計算最佳化等。 另外事先也會預留出記憶體空間,以便儲存目的碼,並進行與機器(Machine Dependent)相關的最佳化動作,如選擇指令,暫存器的使用判斷等。最後再輸出可重新定位的目的碼。 翻譯程式的種類 組譯器(Assembler) 編譯器(Compiler) 直譯器(Intepreter) 組譯器(Assembler) 組譯器是將組合語言所寫的程式翻成機器碼。 還必須提供給連結器及載入器所需要的資訊與找到每個變數的地址,翻譯出來的機器碼,則稱為目的程式(Object Program)。 不同的CPU也會有不同的組譯器。 編譯器(Compiler) 編譯器(compiler)是將原始程式區分為數個階段轉換為機器可讀的可執行檔的目的程式,編譯器必須先把原始程式讀入主記憶體後才可以開始編譯。 原始程式每修改一次,就必須重新經過編譯器的編譯過程,才能保持執行檔為最新的狀況。 經過編譯後所產生的執行檔,執行中不須要再翻譯,因此執行效率高於直譯程式。 針對程式開發者所使用的程式語言(C++、Java、C等)的不同,就必須選擇其相對的編譯器.。 直譯器(Intepreter) 直譯器(Intepreter)在程式執行時,不需要產生目的檔或機器語言,會先檢查所要執行那一行敘述的語法,如果沒有錯誤,便直接執行該行程式,如果碰到錯誤就會立刻 中斷,直到錯誤修正之後才能繼續執行。 例如LISP、JavaScript、PROLOG。 編譯器與直譯器間的差異性 機器語言 有一種結合編譯及直譯兩種性質的P-碼(P-Code)編譯程式,P-碼編譯程式能將由高階語言所編寫的原始程式碼,轉換成中間形式碼(Intermediate Form)後,再加以執行,此處中間形式碼(Intermediate Form)是指某一種虛擬機器(Pseudo Machine)的機器語言。 P-碼編
文档评论(0)