TOP
0
0
三民出版.新書搶先報|最速、最優惠的新鮮貨報給你知!
編譯原理及編譯程序構造(第2版)(簡體書)
滿額折

編譯原理及編譯程序構造(第2版)(簡體書)

商品資訊

人民幣定價:38 元
定價
:NT$ 228 元
優惠價
87198
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點:5 點
商品簡介
名人/編輯推薦
目次
書摘/試閱
相關商品

商品簡介

《普通高校計算機專業精品教材系列:編譯原理及編譯程序構造(第2版)》介紹編譯理論基礎及其實現方法,強調語言的形式化定義、編譯技術的各種概念及實現過程的具體方法。介紹過程以算法為核心,力求簡單明了地反映編譯的基礎知識。從形式語言理論角度討論詞法分析和語法分析技術,為計算機軟件工作者開發大型軟件打下良好基礎。
本書以理論聯系實際為宗旨,內容深入淺出,重點突出,并結合構造el語言的編譯程序介紹一種常用而又簡單的編譯方法。
本書可作為高等院校計算機專業的本科生或專科教材,也可作為碩士生入學考試及計算機軟件技術人員的參考書。

名人/編輯推薦

《普通高校計算機專業精品教材系列:編譯原理及編譯程序構造(第2版)》可作為高等院校計算機專業的本科生或專科教材,也可作為碩士生入學考試及計算機軟件技術人員的參考書。

目次

l 引論
1.1 程序設計語言與編譯
1.2 編譯程序概述
1.2.1 詞法分析
1.2.2 語法分析
1.2.3 中間代碼生成
1.2.4 優化
1.2.5 目標代碼生成
1.2.6 表格與表格管理
1.2.7 出錯處理
l.2.8 遍
1.3 編譯程序生成
1.4 編譯程序構造
習題
2 編譯基礎知識

l 引論
1.1 程序設計語言與編譯
1.2 編譯程序概述
1.2.1 詞法分析
1.2.2 語法分析
1.2.3 中間代碼生成
1.2.4 優化
1.2.5 目標代碼生成
1.2.6 表格與表格管理
1.2.7 出錯處理
l.2.8 遍
1.3 編譯程序生成
1.4 編譯程序構造
習題
2 編譯基礎知識
2.1 字母表與符號串
2.1.1 符號串集合的運算
2.1.2 符號串的前綴、后綴及子串
2.1.3 字母表的閉包與正閉包
2.2 文法與語言的關系
2.2.1 文法的直觀概念
2.2.2 文法與語言的形式定義
2.3 文法構造與文法簡化
2.3.1 由語言構造文法的例子
2.3.2 文法的簡化
2.3.3 構造無E產生式的上下文無關文法
2.4 語法樹與文法的二義性
2.4.1 語法樹
2.4.2 文法的二義性
習題
……
3 詞法分析
4 自上而下語法分析
5 優先分析法
6 LR分析法及分析程序自動構造
7 語法制導翻譯并產生中間代碼
8 運行是數據區的管理
9 代碼優化
10 目標代碼生成
附錄

參考文獻

書摘/試閱



這種技術除了可以減少搜索時間外,還有一個優點是把兩小塊合并為較大塊比較容易實現。其缺點是會使內部碎片增加,因為分配的塊可能大于所申請的長度。另外,外部碎片也可能增加。因為,雖然兩塊是毗鄰的,但由于它們不是雙胞塊,所以不能合并。盡管這樣,這種技術還是比前兩種技術更為有效。
8.3.2堆空間的釋放與無用單元收集
1)堆空間的釋放
在程序設計語言中有堆空間的釋放語句,像Pascal中的dispose(P),PL/1中的free等語句都是釋放語句。這些語句是將指針變量P所指的存儲塊退回到可利用表中。最簡單的處理辦法是將釋放塊作為新塊插入到可利用表的鏈首位置。但這種回收策略有個缺點,就是在程序運行一段時間后,可利用表中將含有大量小塊,分配程序的搜索時間將變得過分冗長,而且有不能滿足用戶申請要求的危險。一種較好的解決辦法是將兩個連續的小塊合并成一大塊。對新釋放的塊,按存儲地址大小在可利用表中檢查是否有與它是相鄰關系的塊,若有就將它們合并成一大塊,否則僅按地址大小插入到適當位置。為實現此操作,可利用表必須按塊的地址順序組織,以便搜索和插入。
在Pascal中,堆空間是全局量。設P是某過程內的局部變量,執行new(P)以后,在堆中為P分配一塊空間,如果在退出該過程前沒有把P空問釋放掉(這不算語法錯或語義錯),那么在退出該過程后P所指的空間既沒有用但又不能再分配給其他用戶,造成資源浪費,并經常導致死機。
為了克服這個問題,有些語言的編譯程序提供堆管理程序,對無用單元進行收集。
2)無用單元收集(garbage collection)
無用單元收集程序一般是在堆的可利用空間幾乎耗盡,以至于不能滿足用戶申請存儲區要求,或者發現可利用空問已降至某個危險點時才執行。無用單元收集過程通常分為兩個階段:第一階段稱為作標記階段,即對已分配的塊查閱這一段時間內是否被訪問過,若被訪問過就作一標記;第二階段是收集階段,即把所有未加標記的存儲塊加入到可利用表中,然后消除加過標記的那些存儲塊的標記,包括訪問標記。這種方法可以防止死塊的產生,因為加上標記的塊不會被釋放(表示它還在用),而沒有加標記的塊都會被釋放到可利用表中。
這種無用單元收集技術存在一個缺點:它的開銷(主要指收集時間)隨可利用空問的下降而增加。解決這個問題的途徑是在可利用空間降至某個數值時就調用收集程序,使得可利用空問總保持在較佳的狀態。另外,在執行無用單元收集程序時必須中斷用戶程序的執行,要等到收集程序執行結束后再執行用戶程序。所以,若頻繁地執行收集程序,必然影響計算機的運算速度。因此,選擇執行收集程序的時刻必須要合理。
上述的無用單元的收集只能收集死塊單元(包括長期不用單元)和外部碎片,不能收集內部碎片。解決這個問題的方法是在收集的第一階段,標記的對象不是以存儲塊為單位而是以存儲單元為單位。第二階段是既實行收集又進行內存大搬家,對每一使用塊重新定位,將已用塊歸于一端,騰出另一端為可利用空間。這種操作可以收集所有無用單元。

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 198
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區