chibicc compiler を6800向けに改造する (12) savage benchmark
savage benchmark というベンチマークテストがある。初出は Dr. Dobb’s Journal, Number 83, September 1983, p. 120。 下記の演算をを2500回繰り返す。 2乗とsqrtは逆演 ...
chibicc compiler を6800向けに改造する (11) whetstone
簡易プロファイラができたので、ベンチマークテストを見ながら性能改善を行なっている。今回は Whetstone。 DhrystoneとWhetstoneは、1980-90年代によく使われていたベンチマークテストという印象があります。 作られた ...
chibicc compiler を6800向けに改造する (10) プロファイラ
Dhrystone や Whetstone が動くようになったのだけど、Z80のコンパイラと比べると遅いのである。 Z80は1命令数あたりの実行ステート数は多いが、4MHzで動く。今ならもっと高速で動作するチップもあるが、1980年ごろは4 ...
chibicc compiler を6800向けに改造する (9) IEEE754 float の比較(3)
chibicc 6800のfloatの比較では、TOS (top of stack)に左辺を積んで、右辺を@longに置いて、jsr __cmpf32tos する。 cmpf32tos は AccB とフラグで比較の結果を返す。 両辺のどち ...
chibicc compiler を6800向けに改造する (8) IEEE754 float (2)
「chibicc 6800 には、IEEE754形式の32bit floatを実装している。オールアセンブラなので、割と速い」などと書いたのだけど、それでも遅いのである。 chibicc compiler を6800向けに改造する (6) ...
chibicc compiler を6800向けに改造する (7) dhrystone
コンパイラが一通り動くようになったのでベンチマークしてみた。古典的な dhrystone。 z88dkで動くバージョンがあったので、それで試してみる。 案の定、いくつかbugが出たが、なんとか動くようになった。 z88dk/libsrc/_ ...
chibicc compiler を6800向けに改造する (6) IEEE754 float (1)
chibicc 6800 には、IEEE754形式の32bit floatを実装している。オールアセンブラなので、割と速い。 chibicc-6800-v1/libc/__float.s at main · zu2/chibicc-6800 ...
chibicc compiler を6800向けに改造する (5) アドレッシングと最適化
MC6800向けにコンパイラを書いていて困るのは、Acc A,B と IX,SP が別世界の住人であることだ。 Acc A,B で演算した結果をIXやSPに移動するには、ゼロページを経由するしかない。12cycles, 6bytes必要だ。 ...
chibicc compiler を6800向けに改造する (4) strcpy
MC6800の泣きどころはインデックスレジスタが1つしかないことと、スタック操作が苦手なことだ。例としてstrcpyを書いてみよう。 unsigned char *strcpy(unsigned char *dst, unsigned ch ...
いまさらベーシックマスターの開発環境を作ってみる(47) MAME
各種エミュレーターで有名な MAMEdev.org | Home of The MAME Project が、バージョン0.270からBASICMASTER Jrをサポートしていた。 (Sony NWS-3270があるのも大変そそりますが、 ...
生成AI(gemini)を使って16進ダンプリストを入力する
過去のプログラムで遊ぶ時に 避けられないのがプログラムリストの入力である。 BASICであれば、入力時・実行時にエラーが出るので、まだなんとかなる。 でも、16進ダンプは打ち間違えると、プログラムが暴走してどこで間違えたかわからない。 後年 ...
ベーシックマスターの文字列出力は$04が終端文字(ベーシックマスター開発 その46)
最近、Quoraを読んでいたら以下のような質問があった。 C言語の文字列は、何故、文字列長を含めたデータ構造にしなかったのでしょうか? 昔からのプログラマだと、MS-BASICやUCSD Pascalは文字列長+文字だったなあ、とか、その前 ...