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

2009年2月7日

ANSI Cコンパイラ LCCの6502ターゲット開発

Filed under: Weblog — い~ぐる @ 1:49 PM

Apple-I互換システムで使うため、LCCの6502ターゲットを開発中。

検索するとlcc65というプロジェクトが見つかるのだが、ソースはないし、特定機種限定の開発になっているらしいので、スクラッチ開発することにした。

以下、テストプログラムのコンパイル結果をTASMでアセンブルしたリストである。
まだ、アセンブラが通るレベルというだけで、詳細の確認はこれからだが、なんとなく、6502っぽいコードになっているかな?

疑似レジスタとして、ゼロページの16バイトを用意したが、コンパイラの出力を見る限り、16バイトもいらなかったかも?もう少し整理してから、最終的に結論を出そう。

0056   0349 B1 FA               LDA (R5),Y
0057   034B 85 F6               STA R3
0058   034D C8                  INY
0059   034E B1 FA               LDA (R5),Y
0060   0350 85 F7               STA R3+1
0061   0352             ;ASGNI2 laddr
0062   0352 A0 02               LDY #2
0063   0354 A5 F6               LDA R3
0064   0356 91 F8               STA (R4),Y
0065   0358 A5 F7               LDA R3+1
0066   035A C8                  INY
0067   035B 91 F8               STA (R4),Y
0068   035D             ;SUBI2 reg acon
0069   035D 38                  SEC
0070   035E A5 F6               LDA R3
0071   0360 E9 01               SBC # $FF & 1
0072   0362 85 F4               STA R2
0073   0364 A5 F7               LDA R3+1
0074   0366 E9 00               SBC # 1 >> 8
0075   0368 85 F5               STA R2+1
0076   036A             ;ARGI2 reg
0077   036A A5 F5               LDA R2+1
0078   036C 48                  PHA
0079   036D A5 F4               LDA R2
0080   036F 48                  PHA
0081   0370             ;CALLI2 acon hasargs
0082   0370 20 FB 02            JSR foo
0083   0373 A2 02               LDX #2
0084   0375 68                  PLA
0085   0376 CA                  DEX
0086   0377 D0 FC               BNE *-2
0087   0379             ;LOADI2 reg
0088   0379 A5 F0               LDA R0
0089   037B 85 F6               STA R3
0090   037D A5 F1               LDA R0+1
0091   037F 85 F7               STA R3+1

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

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress