【導讀】一個簡單的代碼生成算法。涉及存儲管理,指令選擇,寄存器分配??芍囟ㄎ荒繕四K。允許程序模塊分別編譯。免去編譯器重復匯編器的工作。從教學角度,增加可讀性。指令系統(tǒng)的一致性和完備性是重要的因素。若不考慮目標程序的效率,指令的選擇是直截。MOVy,R0/*把y裝入寄存器R0*/. MOVR0,x/*把R0存入x中*/. 逐個語句地產生代碼,常常得到低質量的代碼。某種計算次序可能會比其它次序需要較少的。選擇最佳次序是一個NP完全問題。四字節(jié)組成一個字,有n個通用寄存器。再用有向邊表示基本塊之間的控制流信息,首先確定所有的入口語句。能由條件轉移語句或無條件轉移語句轉到的語句。兩個基本塊計算一組同樣的表達式。這些表達式的值分別代表同樣的活躍名字的值。有很多等價變換可用于基本塊。公共子表達式刪除。所有結點是強連通的。內循環(huán)不含其它循環(huán)。對每個基本塊從最后一個語句反向掃描到第。利用下次引用信息,可以壓縮臨時變量需要