アダルト・ヴァイオリン May the force be with you..

2009年2月11日

6502コードジェネレータ改良

Filed under: Weblog — い~ぐる @ 1:52 AM

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

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress