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 白色天堂 閱讀(264) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 本溪| 武乡县| 巴南区| 临江市| 鄢陵县| 双江| 宜君县| 太保市| 杂多县| 梅河口市| 阜康市| 雷波县| 福州市| 望都县| 思南县| 塔河县| 屯昌县| 禹州市| 荔波县| 淮南市| 古蔺县| 巨鹿县| 肥城市| 苍溪县| 南木林县| 尚志市| 镇平县| 辰溪县| 京山县| 来凤县| 伊川县| 青川县| 重庆市| 剑川县| 沙坪坝区| 武冈市| 闸北区| 博客| 新竹县| 府谷县| 许昌县|