ず@沖縄

BASICMASTER

Amsterdam Compiler Kit を6800向けに改造する (1) スタック構造

Amsterdam Compiler Kit というポータブルで多言語のコンパイラがある。私は30年以上前に MINIX 2.0 で使っていた。PC/AT互換機(80286)で草の根BBSのホストプログラムの構築に使っていた。懐かしいなあ。...
BASICMASTER

MC6800のプログラミングテクニック(18) BYTE SAVING PROGRAMMING TRICKS FOR THE 8080

Dr. Dobb's Journal という、書名だけでは内容がわからないマイコン雑誌があった。一時期は日本語版も発売されていた。プログラミングテクニックが掲載されていて、私も参考にしたものだ。さて、その DDJ誌に “BYTE SAVIN...
BASICMASTER

MC6800のプログラミングテクニック(17) AccBを符号拡張・Excess128,127

昨今のC言語で普通にcharと書くとsigned charである。イマドキのCPUでは符号拡張のコストはほぼ0なので問題ないのだが、MC6800では大騒ぎである。chibicc-6800で使っているのは下記のコード。ASR/ROLでbit7...
BASICMASTER

chibicc compiler を6800向けに改造する (12) savage benchmark

savage benchmark というベンチマークテストがある。初出は Dr. Dobb’s Journal, Number 83, September 1983, p. 120。下記の演算をを2500回繰り返す。2乗とsqrtは逆演算、...
BASICMASTER

chibicc compiler を6800向けに改造する (11) whetstone

簡易プロファイラができたので、ベンチマークテストを見ながら性能改善を行なっている。今回は Whetstone。DhrystoneとWhetstoneは、1980-90年代によく使われていたベンチマークテスト。作られたのはWhetstoneが...
BASICMASTER

chibicc compiler を6800向けに改造する (10) プロファイラ

Dhrystone や Whetstone が動くようになったのだけど、Z80のコンパイラと比べると遅いのである。Z80は1命令数あたりの実行ステート数は多いが、4MHzで動く。今ならもっと高速で動作するチップもあるが、1980年ごろは4M...
BASICMASTER

chibicc compiler を6800向けに改造する (9) IEEE754 float の比較(3)

chibicc 6800のfloatの比較では、TOS (top of stack)に左辺を積んで、右辺を@longに置いて、jsr __cmpf32tos する。cmpf32tos は AccB とフラグで比較の結果を返す。両辺のどちらか...
BASICMASTER

chibicc compiler を6800向けに改造する (8) IEEE754 float (2)

「chibicc 6800 には、IEEE754形式の32bit floatを実装している。オールアセンブラなので、割と速い」などと書いたのだけど、それでも遅いのである。 chibicc compiler を6800向けに改造する (6) ...
BASICMASTER

chibicc compiler を6800向けに改造する (7) dhrystone

コンパイラが一通り動くようになったのでベンチマークしてみた。古典的な dhrystone。 z88dkで動くバージョンがあったので、それで試してみる。案の定、いくつかbugが出たが、なんとか動くようになった。z88dk/libsrc/_DE...
BASICMASTER

chibicc compiler を6800向けに改造する (6) IEEE754 float (1)

chibicc 6800 には、IEEE754形式の32bit floatを実装している。オールアセンブラなので、割と速い。 chibicc-6800-v1/libc/__float.s at main · zu2/chibicc-6800...
BASICMASTER

chibicc compiler を6800向けに改造する (5) アドレッシングと最適化

MC6800向けにコンパイラを書いていて困るのは、Acc A,B と IX,SP が別世界の住人であることだ。Acc A,B で演算した結果をIXやSPに移動するには、ゼロページを経由するしかない。12cycles, 6bytes必要だ。遅...
BASICMASTER

chibicc compiler を6800向けに改造する (4) strcpy

MC6800の泣きどころはインデックスレジスタが1つしかないことと、スタック操作が苦手なことだ。例としてstrcpyを書いてみよう。unsigned char *strcpy(unsigned char *dst, unsigned cha...
スポンサーリンク