【正文】
, D 表示變量,用 T , U , V 表示中間變量,有四元式如下:( 1 ) T : = A B( 2 ) U : = A C( 3 ) V : = T + U( 4 ) D : = V + U其名字表中的待用信息和活躍信息如下表,用 “ F ”表示 “非待用” “非活躍”,用 “ L ”表示活躍。l 交互環(huán)境:程序在執(zhí)行過(guò)程中直接和用戶在顯示控制臺(tái)上交互,不斷從鍵盤或鼠標(biāo)接受輸入,將輸出發(fā)送到顯示器上。 d ) 把符號(hào)表中變量 B 和 C 的待用信息欄置為 “ i ”,活躍信 息欄置為 “活躍 ” 。這里假定變量都是活躍的,臨時(shí)變量都是非 活躍的。 (4) while n的最左子結(jié)點(diǎn) m不是葉結(jié)點(diǎn)并且其所有 父結(jié)點(diǎn)均已列入表中 do (5) begin將 m列入表中 。B .處理完基本塊中所有四元式之后,對(duì)現(xiàn)行值在某寄存器 R中的每個(gè)變量 M ,若它在出口之后使活躍的,則生成 STR , M ,放到主存中。標(biāo)準(zhǔn) ——以各變量在循環(huán)內(nèi)需要訪問(wèn)主存單元的次數(shù) 為標(biāo)準(zhǔn)。待用信息和活躍信息 待用信息 活躍信息變量名初值 待用信息鏈 初值 活躍信息鏈A F ( 2 ) ( 1 ) L L LB F ( 1 ) L LC F ( 2 ) L LD F F L FT F ( 3 ) F F L FU F ( 4 ) ( 3 ) F F L L FV F ( 4 ) F F L F表中 “待用信息鏈”與 “活躍信息鏈”的每列從左至右為每從后向前掃描一個(gè)四元式時(shí)相應(yīng)變量的信息變化情況,空白處為沒(méi)變化。語(yǔ)法:使能條件 1 →動(dòng)作 1 使能條件 2 →動(dòng)作 2 . . . 使能條件 n →動(dòng)作 n如 p r o l o g , y a c cO O 程序設(shè)計(jì)已經(jīng)變成越來(lái)越重要的計(jì)算模式;面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言支持抽象數(shù)據(jù)類型和繼承性,即將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作放在一起,定義一組具有公共行為屬性和數(shù)據(jù)類型的對(duì)象,由類機(jī)制將這組對(duì)象給予抽象表示。 b ) 把符號(hào)表中變量 A 的待用信息欄和活躍信息欄分別置為 “非待用 ” 和 “非活躍 ” 。對(duì)每個(gè)四元式 i: A := B op C ,依次執(zhí)行下述步驟: a ) 把符號(hào)表中變量 A 的待用信息和活躍信息附加到四元式 i 上。l 基于規(guī)則 ( r u l e _ b a sed) 的和面向?qū)ο蟮?( o b j e c t _ o r i e n t e d )程序的執(zhí)行式通過(guò)檢查使能條件,決定執(zhí)行一個(gè)適當(dāng)?shù)膭?dòng)作。待用信息和活躍信息在四元式上的標(biāo)記如下所示:( 1 ) T( 3) L: =A( 2) LBFL( 2 ) U( 3) L: =AFLCFL( 3 ) V( 4) L: =TFF+U( 4) L( 4 ) DFL: =VFF+UFF2 寄存器描述和地址描述為隨時(shí)掌握各寄存器的情況, 寄存器描述數(shù)組 R V A L U E : 描述每個(gè)寄存器當(dāng)前的狀況 變量地址描述數(shù)組 A V A L U E :表示變量的存放情況3 基本塊的代碼生成算法假設(shè)只有 A := B o p C 的四元式序列A . 對(duì)每個(gè)四元式 i: A := B o p C ,依次執(zhí)行下述步驟:1 . 以四元式 i: A := B o p C 為參數(shù),調(diào)用過(guò)程 g et re g ( i : A := B o pC ) 。第十二章 代碼生成