BASICMASTER, 昔のパソコン

32bit版の除算を考える。考え方は8/16bit版と一緒だが、32bitだとレジスタが全く足りない。32bit加減算が必要なのに、AccAB合わせても16bit幅しかない。 被除数とワーク領域(剰余)だけで合計8バイトものシフトが発生する ...

BASICMASTER, 昔のパソコン

こんどは16bit版の除算を考える。考え方は8bit版と一緒だが、16bitだとレジスタが足りないので工夫が必要になる。 ワーク領域(剰余)は加減算が必要なので、レジスタに置く。16bit除算なので加減算も16bit幅だ。これでAccABを ...

BASICMASTER, 昔のパソコン

整数除算の商のビットの0,1を数えると、0になるビットが多く 1は少ない。その性質が整数除算の高速化に使える。 被除数(a)と除数(d)がランダムに分布していると仮定してみよう(実際には扱うデータによって異なるはずだが、簡単に考えてみる)。 ...

2025/11/18BASICMASTER, 昔のパソコン

1978年に発表された Intel 8086 には乗除算命令が搭載されていた。それ以前の8bitマイクロプロセッサでは、MC6801やMC6809に8bit乗算命令があるぐらい。 初期のRISCであるSPARCでも パイプラインを乱さないよ ...

BASICMASTER, 昔のパソコン

chibicc compiler を6800向けに改造する (5) アドレッシングと最適化 の続き。 MC6800で良いコードを生成するには、Acc A,B と IX,SP の使い分けが必要だと書いたが、もっと場合分けが必要なことに気がつい ...

BASICMASTER, 昔のパソコン

chibicc compiler を6800向けに改造する (4) strcpy | ず@沖縄 の続きです。 前回も書いたように、MC6800の泣きどころはインデックスレジスタが1つしかないことと、スタック操作が苦手なこと。例としてstrc ...

2025/09/24BASICMASTER

Z80での高速な平方根処理: PICマイコンは面白い にZ80で平方根を高速に求める記事があった。 記事で参照されているRetro Programming: A Fast Z80 Integer Square Rootにあったのは以下のよう ...

BASICMASTER, 昔のパソコン

Amsterdam Compiler Kit を改造してMC6800用のコードを出力する試みの6回目。実はスタックマシンの動作が思っていたのと違っていてテストが動きません。 関数引数が1バイトのときのendian問題のときにもっと調べておけ ...

BASICMASTER, 昔のパソコン

Amsterdam Compiler Kit を改造してMC6800用のコードを出力する試みの5回目。ackに含まれているexampleのいくつかが 動くようになりました。 標準入力からの入力が必要なので、emu6800にパッチを当てて使っ ...

BASICMASTER, 昔のパソコン

Amsterdam Compiler Kit を改造してMC6800用のコードを出力する試みの4回目。今回は関数引数がcharのときの処理 davidgiven/ack: The Amsterdam Compiler Kit EM code ...

BASICMASTER, 昔のパソコン

Amsterdam Compiler Kit の生成する中間言語(EM code)では、Top of Stack と0を比較し、ToSに0,1を入れる命令がある。 tlt,tle,teq,tne,tge,tgt がそれだ。6800では To ...

BASICMASTER, 昔のパソコン

Amsterdam Compiler Kit を改造してMC6800用のコードを出力する試みの3回目。今回は関数呼び出しについて。 davidgiven/ack: The Amsterdam Compiler Kit 引数の受け渡し スタッ ...