【導(dǎo)讀】構(gòu)造代碼生成程序要考慮的因素。成特定機(jī)器的目標(biāo)代碼。代碼生成器的輸入。–待裝配的機(jī)器語(yǔ)言模塊。當(dāng)需要執(zhí)行時(shí),由。尚需經(jīng)過(guò)匯編程序匯編,轉(zhuǎn)。用兩個(gè)或多個(gè)不同的指令序列完成。指令選擇器選擇其中。通常情況下,指令在寄存器中訪問(wèn)操作數(shù)的開。取入到寄存器中。作數(shù)保存在寄存器中是比較有利的。寄存器的分配可以分成兩個(gè)子問(wèn)題:。留在寄存器中的一組變量;留的具體寄存器。保留在寄存器中直到寄存器不夠分配為止。變量值時(shí)可減少對(duì)內(nèi)存的存取次數(shù),以提高運(yùn)行速度;在同一基本塊內(nèi)后邊不再被引用的變量所占用的寄存器。應(yīng)盡早釋放,以提高寄存器的利用率。–確定分配有寄存器的值應(yīng)該在哪個(gè)寄存器中。由于一些目標(biāo)機(jī)可能具有不同類型的寄存器,不同在于指令順序和寄存器的賦值。若先進(jìn)行調(diào)度,寄存器趨向于過(guò)度分配;若先。引用則可構(gòu)成待用信息鏈與活躍信息鏈。這里假定變量都是活躍的,臨時(shí)變量都是非。息欄置為“活躍”。注意,以上a)和b),c)和d)的次序不能顛倒。