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

正文內(nèi)容

pl0-編譯程序講解-資料下載頁

2025-08-04 22:41本頁面
  

【正文】 {getsymdo()。 if(sym==ident) {enter(procedur, amp。tx, lev, amp。dx)。 … } ...... if (1 == block(lev+1, tx, nxtlev)) ...... } ...... } PL/0分程序的處理子程序block 初值為 fsys [period]+declbegsys+statbegsys 下標(biāo)指針 cx, tx和 變量 dx的作用 CX:為目標(biāo)代碼 code數(shù)組的下標(biāo)指針。實(shí)際上目標(biāo)代碼的順序是內(nèi)層過程的在前邊,主程序的目標(biāo)代碼在最后。 tx : table表的下標(biāo)指針 ,是以 值參數(shù) 形式使用的。 dx: 計算每個變量在運(yùn)行棧中相對本 過程 基地址 的偏移量 ,放在 table表 中的 adr域, 生成 目標(biāo)代碼 時再 放在 code中的 a域 。 過程 體 入口 時的處理 code[table[tx0].adr].a=cx。 //過程入口地址填寫在 code中 table[tx0].adr=cx。 //過程的 入口 填寫在 table中 table[tx0].size=dx。 //過程 占的空間 填寫在 table中 cx0=cx。 //保留 過程在 code中的 入口地址 gen(int,0,dx)。 //生成 過程 入口指令 類 p- code解釋器 ?目標(biāo)代碼存放在數(shù)組 CODE中( 程序地址寄存器 p) ?解釋程序定義一個一維整型數(shù)組 S作為 運(yùn)行棧 ?棧頂寄存器 (指針) t, 基址寄存器 (指針) b, 指令寄存器 i(當(dāng)前正在解釋的目標(biāo)指令) 目標(biāo)代碼的解釋執(zhí)行 幾條 特殊指令 在 code中的 位置 和 功能 ?INT 0 A 在 過程 目標(biāo)程序的 入口處 , 開辟 A個單元的數(shù)據(jù)段。 A為 局部變量 的 個數(shù) +3。 ?OPR 0 0 在 過程 目標(biāo)程序的 出口處 , 釋放數(shù)據(jù)段 (退棧), 恢復(fù)調(diào)用 該過程 前 正在運(yùn)行的過程 的數(shù)據(jù)段 基址寄存器 B和 棧頂寄存器 T的值,并將 返回地址 送 到指令地址寄存器 P中。 ?CAL L A 調(diào)用過程 , 填寫 靜態(tài)鏈 、 動態(tài)鏈 、 返回地址 ,給出 被調(diào) 用過程 的 基地址 值, 送 入基址寄存器 B中,目標(biāo)程序的 入口地址 A的值 送 指令地址寄存器 P中,使指令從 A開始執(zhí)行 interpret 三個寄存器賦初值 t:=0。 b:=1。 p:=0。 主程序的 SL, DL, RA賦初值 s[1]:=0。 s[2]=0。 s[3]=0。 i:=code[p]。 p:=p+1。 P=0? 返回 解釋執(zhí)行的流程圖 執(zhí)行指令 i N Y 幾條 特殊指令 的 解釋執(zhí)行 過程 出口 — opr 0 0 RA DL SL b . . t M t b t=b1。 p=s[t+3]。 b=s[t+2] Q 調(diào)用過程 cal l a {s[t+1]=base(l, s, b)。 填寫 靜態(tài)鏈 s[t+2]=b。 填寫 動態(tài)鏈 s[t+3]=p。 填寫 返回地址 b=t+1。 被調(diào)用過程的基地址 p=a 過程入口地址 a送 p } //t在 int中設(shè)置 int base(int l, int * s, int b) {int b1。 b1:=b。 //find base l level down while (l0) {b1=s[b1]。 l=l1。 } return b1。 } 167。 4 符號表的一般形式討論 符號表的作用和內(nèi)容 ?語義檢查的依據(jù); ?目標(biāo)代碼生成階段地址分配的依據(jù); ?在編譯中,符號表被頻繁使用,表的組織方式對編譯的 效率起著十分重要的作用。 ?符號表中,包括名字、種類、類型、層次、相對地址、存儲類別等名字的屬性信息,以及動態(tài)數(shù)組的內(nèi)情向量、記錄結(jié)構(gòu)型的成員信息、函數(shù)及過程的形參等結(jié)構(gòu)信息。 符號表的組織方式:線性表、散列表、樹結(jié)構(gòu), … ?符號表的組織方式必須 維持源程序中的作用域信息 。 ?棧符號表:函數(shù)或分程序的嵌套結(jié)構(gòu),使得程序中出現(xiàn)的符號的處理(內(nèi)層可引用外層符號、同名變量內(nèi)層優(yōu)先)與棧的操作相一致。一個過程結(jié)束時將釋放相應(yīng)的子符號表 解決作用域檢查問題。 符號表的操作: ? 創(chuàng)建符號表:在編譯開始時或進(jìn)入一個分程序 ? 插入表項(xiàng):定義時(包括變量和形參定義) ? 查詢表項(xiàng):可執(zhí)行語句使用時 ? 修改表項(xiàng):在獲得新的語義值信息時進(jìn)行 ? 刪除一個或一組無用的項(xiàng) ? 釋放符號表的空間:在編譯結(jié)束前或退出一個分程序 符號表的生存期 ?對多遍掃描的編譯程序,不同遍所用的符號表也往往不同。 ?編譯中的大部分符號表的生存期是編譯過程,個別特殊表(動態(tài)數(shù)組的內(nèi)情向量等)需保留到運(yùn)行階段 符號表實(shí)例 單遍掃描 program sort(input,output) var a: array[0..10] of integer。 x: integer。 procedure readarray。 var i: integer。 begin ... a ... end {readarray}。 procedure exchange (i, j: integer)。 begin x := a[i]。 a[i]:=a[j]。 a[j]:=x end 。 procedure quicksort (m, n:integer)。 var k,v: integer。 function partition (y,z: integer): integer。 var i, j:integer。 begin ... a ...exchange (i, j)。 ... end。 begin ... end {quicksort}。 begin ... end {sort}. P4的符號表:嵌套層次表 +二叉查找樹 標(biāo)準(zhǔn)名字表( integer,…,false,… )二叉樹 當(dāng)前層 top … 同一層內(nèi)全部名字的標(biāo)識符記錄利用左鏈和右鏈連接在一起形成二叉查找樹 top 0 1 2 3 4 y i z j m k n v partion sort a x readarray exchange quicksort sort a[], x readarray() i exchange (i, j) quicksort (m, n) k,v partition (y,z) i, j 棧 指出當(dāng)前活動著的各嵌套的過程 const a=1, b=2, c=3。 var step。 procedure move(n, from, buf, to)。 begin if n0 //遞歸總是有條件的 begin cal move(n1, from, to, buf)。 write(from, ?“, to)。 step:=step+1。 cal move(n1, buf, from, to)。 end end。 begin step:=0。 cal move(3, a, b, c)。 write(step=“, step)。 end. 作業(yè)( P30): 5 A B C 給出上面兩個盤子已經(jīng)移到 B上,而 A上只剩一個盤子時數(shù)據(jù)棧的狀態(tài)。 對調(diào)用 move(3, a, b, c)。 上機(jī)調(diào)試觀察調(diào)用執(zhí)行過程,畫出調(diào)用分解示意圖 move(2, a, c, b)。 move(1, a, b, c)。 move(1, c, a, b)。 ab move(2, b, a, c)。 ac
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1