lburgの記述のマッチングパターンを増やし、コスト関数を工夫して、生成するコードの改良を図る。もちろん、まだ、ピープホール最適化をしているわけではないので、無駄なコードは出るのであるが、パターンマッチで最適化できる最低限のことはコンパイラの初期生成時に行なっておく方が結果が良いはずなのだ。
先日の、8クイーン問題のコンパイラ出力リスト(の一部)を下記に示す。
先日のコードより、2割程、生成するコードの大きさが小さく、よい感じになってきつつある。
0448 06AD C8 INY 0449 06AE 91 F6 STA (R3),Y 0450 06B0 ;INDIRI2 0451 06B0 BA TSX 0452 06B1 BD 03 01 LDA $101+2,X 0453 06B4 85 F6 STA R3 0454 06B6 BD 04 01 LDA $102+2,X 0455 06B9 85 F7 STA R3+1 0456 06BB ;LSHI2 0457 06BB 06 F6 ASL R3 0458 06BD 26 F7 ROL R3+1 0459 06BF ;ADDP2 0460 06BF 18 CLC 0461 06C0 A5 F6 LDA R3 0462 06C2 69 3B ADC #x & 255 0463 06C4 85 F6 STA R3 0464 06C6 A5 F7 LDA R3+1 0465 06C8 69 09 ADC #x>>8 0466 06CA 85 F7 STA R3+1 0467 06CC ;INDIRI2 0468 06CC A0 00 LDY #0 0469 06CE B1 F8 LDA (R4),Y