【導(dǎo)讀】一個(gè)簡(jiǎn)單的代碼生成算法。涉及存儲(chǔ)管理,指令選擇,寄存器分配。和計(jì)算次序選擇等基本問題。代碼生成器的設(shè)計(jì)中的問題??芍囟ㄎ荒繕?biāo)模塊。–允許程序模塊分別編譯。–免去編譯器重復(fù)匯編器的工作。–從教學(xué)角度,增加可讀性。難易程度,指令系統(tǒng)的統(tǒng)一性和完備性是重。指令的速度和機(jī)器特點(diǎn)是另一些重要的因素。若不考慮目標(biāo)程序的效率,指令的選擇是直。MOVy,R0/*把y裝入寄存器R0*/. MOVR0,x/*把R0存入x中*/. 逐個(gè)語句地產(chǎn)生代碼,常常得到低質(zhì)量的代碼。ADDe,R0--若a不再使用,第三條也。運(yùn)算對(duì)象處于寄存器中的指令通常比運(yùn)算對(duì)。象處于內(nèi)存的指令要短一些,執(zhí)行也快一些。選擇駐留在寄存器中的一組變量。某種計(jì)算次序可能會(huì)比其它次序需要較少的。寄存器來保存中間結(jié)果。四字節(jié)組成一個(gè)字,有n個(gè)通用寄存器R0,R1,二地址指令op源,目的。地址模式和它們的匯編語言形式及附加代價(jià)。指令代價(jià)取成1加上它的源和目的地址模式的。有很多等價(jià)變換可用于基本塊。刪除局部公共子表達(dá)式。當(dāng)且僅當(dāng)x和y都不是t