freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第六章中間代碼生成(留存版)

  

【正文】 i][j] 類(lèi)型檢查和轉(zhuǎn)換 ? 類(lèi)型系統(tǒng): – 給每一個(gè)組成部分賦予一個(gè)類(lèi)型表達(dá)式 – 通過(guò)一組邏輯規(guī)則來(lái)表示這些類(lèi)型表達(dá)式必須滿足的條件 ? 可發(fā)現(xiàn)錯(cuò)誤、提高代碼效率、確定臨時(shí)變量的大小、 … 類(lèi)型系統(tǒng)的分類(lèi) ? 類(lèi)型綜合 – 根據(jù)子表達(dá)式的類(lèi)型構(gòu)造出表達(dá)式的類(lèi)型 if f 的類(lèi)型為 s?t且 x的類(lèi)型為 s then f(x)的類(lèi)型為 t ? 類(lèi)型推導(dǎo) – 根據(jù)語(yǔ)言結(jié)構(gòu)的使用方式來(lái)確定該結(jié)構(gòu)的類(lèi)型: if f(x)是一個(gè)表達(dá)式 then 對(duì)于某些類(lèi)型 α,β; f的類(lèi)型為 α?β且 x的類(lèi)型為 α 類(lèi)型轉(zhuǎn)換 ? 假設(shè)在表達(dá)式 x*i中, x為浮點(diǎn)數(shù)、 i為整數(shù),則結(jié)果應(yīng)該是浮點(diǎn)數(shù) – x和 i使用不同的二進(jìn)制表示方式 – 浮點(diǎn) *和整數(shù) *使用不同的指令 – t1 = (float) i – t2 = x fmul t1 ? 類(lèi)型轉(zhuǎn)換比較簡(jiǎn)單時(shí)的 SDD: – E?E1 + E2 { if( = integer and = integer) = integer。 x3=φ(x1,x2); – y = x3*a 類(lèi)型和聲明 ? 類(lèi)型檢查 (Type Checking) – 利用一組規(guī)則來(lái)檢查運(yùn)算分量的類(lèi)型和運(yùn)算符的預(yù)期類(lèi)型是否匹配。 else x2 = 1。 新的文法產(chǎn)生式 ? 數(shù)組元素 L: L?L[E] | id[E] ? 以數(shù)組元素為左部的賦值: S?L=E。 = 。 ? 如何一趟處理完畢呢? 回填( 2) ? 基本思想: – 記錄 B的代碼中跳轉(zhuǎn)指令 goto , if … goto ,但是不生成跳轉(zhuǎn)目標(biāo)。 ? 方法 : (break語(yǔ)句 ) – 跟蹤外圍語(yǔ)句 S, – 生成一個(gè)跳轉(zhuǎn)指令坯 – 將這個(gè)指令坯的位置加入到 S的 nextlist中。amp。amp。} D1 記錄字段的處理 ? T?record ‘{‘ D ‘}’ ? 為每個(gè)記錄創(chuàng)建單獨(dú)的符號(hào)表 – 首先創(chuàng)建一個(gè)新的符號(hào)表,壓到棧頂; – 然后處理對(duì)應(yīng)于字段聲明的 D,字段都被加入到新符號(hào)表中; – 最后根據(jù)棧頂?shù)姆?hào)表構(gòu)造出 record類(lèi)型表達(dá)式;符號(hào)表出棧 表達(dá)式代碼的 SDD ? 將表達(dá)式翻譯成三地址指令序列 ? 表達(dá)式的 SDD – 屬性 code表示代碼 – addr表示存放表達(dá)式結(jié)果的地址(臨時(shí)變量) – new Temp()可以生成一個(gè)臨時(shí)變量 – gen(…) 生成一個(gè)指令 增量式翻譯方案 ? 主屬性 code滿足增量式翻譯的條件。 三元式的例子 ? a=b*c + b * c 間接三元式 ? 包含了一個(gè)指向三元式的指針的列表 ? 我們可以對(duì)這個(gè)列表進(jìn)行操作,完成優(yōu)化功能;操作時(shí)不需要修改三元式中的參數(shù)。字段聲明和變量聲明的文法一致。 ? 文法 – B ? B‖B | B amp。 – 表達(dá)式的值為真時(shí),跳轉(zhuǎn)到 – 表達(dá)式的值為假時(shí),跳轉(zhuǎn)到 ? ,根據(jù) B所在的上下文指向不同的位置 – 如果 B是 if語(yǔ)句的條件表達(dá)式,分別指向 then分支和 else分支;如果沒(méi)有 else分支,則指向 if語(yǔ)句的下一條指令 – 如果 B是 while語(yǔ)句的條件表達(dá)式,分別指向循環(huán)體的開(kāi)頭和循環(huán)出口處; 布爾表達(dá)式的代碼的 SDD( 1) 布爾表達(dá)式的代碼的 SDD( 2) 布爾表達(dá)式代碼的例子 ? if (x100 || x 200 amp。 =。 label的標(biāo)號(hào); ?
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1