Fuzix-Compiler-Kitの6800用コンパイラ(ベーシックマスター開発 その33)
6800用のコンパイラを探して – Fuzix/CC6303(ベーシックマスター開発 その22) | ず@沖縄の続き。
サポートルーチンを追加して、バグ取りしたら、少しは動作するようになったのでメモ。6800わかる人に手伝って欲しい。
Fuzix-Compiler-Kitとは
Unix-like operating system であるFuzix用のコンパイラ。8bit CPU用もある。6800用は “Work in progress"。
- EtchedPixels/Fuzix-Compiler-Kit: Fuzix C Compiler Project
- EtchedPixels/CC6303: A C compiler for the 6800 series processors (古い?)
- EtchedPixels/Fuzix-Bintools: Assembler, linker etc to go with the compiler
- Fuzix: Because Small Is Beautiful
簡単なテストは通るようになった
test/ ディレクトリにテストプログラムが33個ある。現在21個パス、12個はエラー。
動かないもの
配列のアドレス取得にバグがあって、それを使ってるやつは動かないです。
(op16_on_node() in be-code-6800.c does not set array addresses correctly. · Issue #90 · EtchedPixels/Fuzix-Compiler-Kit)
switchもコードが怪しいのですが、どこが悪いのかまだわからない。
0003-pointer: 0010-pointer: 0012-switch: 0014-array: 0103-pointerlong: 0109-divmodlong: 0110-pointerlong: 0112-switchlong: 0201-float: 0501-qsort: 0502-utol: 0601-register:
2024/10/09 追記: わかったのでissue書いた。23個パス、10個エラー。
2024/10/10 追記: 0201-float以外はpassするようになった。
2024/10/11 追記: 手元の版では全部passするようになった。issue報告中なので、そのうち反映されると思います。
オブジェクトコード
昔のCP/MやFLEXのコンパイラを思い出させるようなコードが出ます。乗除算はもとより、関係演算もサブルーチンコールになるのが辛いです。
このあたりは一通り動くようになってから対処かな。
unsigned n = 0; unsigned c = 0; while (n++ < 100) c++;
_main: des des des des ;make local ptr off 0, rlim 254 noff 0 tsx clr 1,x clr 0,x ; ;make local ptr off 2, rlim 254 noff 2 tsx clr 3,x clr 2,x ; L1_c: ;make local ptr off 0, rlim 252 noff 0 tsx ldab 1,x ldaa 0,x pshb psha addb #1 adca #0 stab 1,x staa 0,x pula pulb pshb psha clra ldab #100 jsr __ccltu ; jeq L1_b
ディスカッション
コメント一覧
まだ、コメントがありません