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

正文內(nèi)容

第六章中間代碼生成(參考版)

2024-08-12 13:20本頁面
  

【正文】 ? 跟蹤的方法 – 在符號表中設置 break條目,令其指向外圍語句 – 在符號表中設置指向 S的 nextlist的指針,然后把這個指令坯的位置直接加入到 nextlist中。 – 考慮 S是 while語句、 if語句的子語句時,分別應該跳轉(zhuǎn)到哪里? 控制轉(zhuǎn)移語句的回填( 2) ? M的作用就是用 – 規(guī)則 1中記錄了 then分支的代碼起始位置; – 規(guī)則 2中,分別記錄了 then分支和 else分支的起始位置; ? N的作用是生成 goto指令坯, 令的位置 控制轉(zhuǎn)移語句的回填 (3) Break、 Continue的處理 ? 雖然 break、 continue在語法上是一個獨立的句子,但是它的代碼和外圍語句相關。amp。 label的標號; ? 原方案生成的指令 goto ,現(xiàn)在生成了 goto 回填和非回填方法的比較( 2) ? 回填時生成指令坯,然后加入相應的 list ? 原來跳轉(zhuǎn)到 ,現(xiàn)在被加入到。 =。} B1 || {label()。 – 這些位置被記錄到 B的綜合屬性 ; – 當 (即 S的代碼生成完畢時),把。需要第二趟處理。 E | E rel E | … ? 根據(jù) E的語法樹結(jié)點所在的位置: – S?while ( E ) S1中的 E,生成跳轉(zhuǎn)代碼 – 對于 S?id = E,生成計算右值的代碼 回填( 1) ? 為布爾表達式和控制流語句生成目標代碼的關鍵問題:某些跳轉(zhuǎn)指令應該跳轉(zhuǎn)到哪里 ? 例如: if (B) S – 按照短路代碼的翻譯方法, B的代碼中有一些跳轉(zhuǎn)指令在 B為假時執(zhí)行, – 這些跳轉(zhuǎn)指令的目標應該跳過 S對應的代碼。 | if (E) S | while (E) S | S S – E? E‖E | E amp。比如 x=ab; ? 處理方法: – 首先建立表達式的語法樹,然后根據(jù)表達式的不同角色來處理。 x!= y ) x = 0。 – 表達式的值為真時,跳轉(zhuǎn)到 – 表達式的值為假時,跳轉(zhuǎn)到 ? ,根據(jù) B所在的上下文指向不同的位置 – 如果 B是 if語句的條件表達式,分別指向 then分支和 else分支;如果沒有 else分支,則指向 if語句的下一條指令 – 如果 B是 while語句的條件表達式,分別指向循環(huán)體的開頭和循環(huán)出口處; 布爾表達式的代碼的 SDD( 1) 布爾表達式的代碼的 SDD( 2) 布爾表達式代碼的例子 ? if (x100 || x 200 amp。}S1{gen(‘goto’ begin)。 gen(begin ‘:’)} B ) {gen( ‘:’)。 = newlabel。 x!= y) x = 0。B2中 B1為假時,不計算 B2,整個表達式為假 ? 短路代碼 – 通過跳轉(zhuǎn)指令實現(xiàn)控制流的處理 – 邏輯運算符本身不在代碼中出現(xiàn); 短路代碼的例子 ? 語句: – if (x100 || x200 amp。 – B1amp。 B | !B | (B) | E rel E | true | false ? 語義 – B1‖B2中 B1為真時,不計算 B2,整個表達式為真。 ? 文法 – B ? B‖B | B amp。} } – 這個規(guī)則沒有考慮生成類型轉(zhuǎn)換代碼 類型的 widening和 narrowing ? Java的類型轉(zhuǎn)換規(guī)則 ? 編譯器自動完成的轉(zhuǎn)換為隱式轉(zhuǎn)換,程序員用代碼指定的轉(zhuǎn)換為顯式轉(zhuǎn)換。 ? 數(shù)組元素作為表達式中的因子: E?L
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1