posts - 12,comments - 1,trackbacks - 0
          代碼生成一般采用tree rewriting的方式,先將源代碼轉換成語法樹的形式,通過模式匹配將子樹替換成葉結點,同時生成代碼指令,當樹全部替換完后代碼即生成了。采用這種方式主要關心匹配規則,甚至可以使用lex/yacc之類的工具生成code generator generator,也便于實現可移植的編譯器。

          dynamic programing
          前面的算法如果只是從左往右依次匹配的話生成的代碼質量不高,DP就是要考慮指令的代價,生成質量較優的代碼。

          自底向上為每個節點計算一系列值存入數組C[],其中index代表使用的register數目,存儲的是相應的代價(要考慮可能增加的store/load指令代價),計算某個節點的C[]時,先找到可能的匹配模式,根據匹配模式選擇可能的寄存器數目組合,計算代價后選擇最小值。這樣遍歷整個樹后可以得到最小代價生成方式。



          posted on 2008-05-07 05:14 白色天堂 閱讀(268) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 司法| 武威市| 花莲县| 越西县| 邛崃市| 鹿泉市| 济源市| 彩票| 新田县| 鄂尔多斯市| 长子县| 徐闻县| 天峻县| 太原市| 嘉兴市| 枞阳县| 公主岭市| 龙江县| 舒兰市| 天气| 广元市| 得荣县| 武鸣县| 长顺县| 岳阳县| 武乡县| 威远县| 深州市| 高清| 新安县| 岑溪市| 富蕴县| 宾阳县| 西贡区| 湖北省| 波密县| 桐庐县| 双牌县| 资源县| 英山县| 清远市|