というのはどうでもよくて、

pushQCodeDstVal :: A24ZParser a -> A24ZParser ([QCode],a)
pushQCodeDstVal parser = do { save <- getQCodeDst -- 出力先を保存しといて
                            ; setQCodeDst []      -- 出力先を空に
                            ; v<-parser           -- 実行
                            ; ret <- getQCodeDst  -- 出力したのを取得
                            ; setQCodeDst save    -- 保存しといたのを戻す
                            ; return (ret,v) }

こういうコードを書いてしまうあたり、僕の脳はもはや副作用にやられすぎだと思った。


ノイマン脳の恐怖

  • 全部のデータが32bit整数に見える


と、いうわけで、三番地文は生成できたので、CFG(Control Flow Graph)作ろー。作りかたは今から調べます。いや、その前にfoldConstか?
あー、僕も素人だから、ここらへん、適当なことが書けるよなー、というのもあったりするんですが、そういうときは、Web2.0的文脈で、「素人が参加できるのは素晴らしい」とかいうことにできるんではないですかね、多分。