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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 随州市| 祁连县| 巴楚县| 浙江省| 连云港市| 兴义市| 海阳市| 澄城县| 绍兴县| 彭阳县| 平度市| 蓬溪县| 定结县| 扎鲁特旗| 内乡县| 平舆县| 安远县| 大理市| 遂宁市| 布拖县| 米脂县| 株洲县| 阿坝县| 镇江市| 宝山区| 拉萨市| 瑞昌市| 健康| 兴文县| 全州县| 罗山县| 都兰县| 伊川县| 屯留县| 韶关市| 辰溪县| 渭源县| 叶城县| 综艺| 塘沽区| 买车|