S.F. Page

Programming,Music,etc...

Steve Wozniakによって書かれた浮動小数点数演算ライブラリのソースコード

江添さんの「Steve Wozniakによって書かれた浮動小数点数演算ライブラリのソースコード」というポストを見てさっそくリンクをチェック。おお、これはすごい。floatの浮動小数点演算の6502のアセンブラソースコードではないか。対数・指数・四則演算ができる。

いまどきのCPUは浮動小数点演算機能なんて普通に持っているし、倍精度演算を命令一発で計算できるのだけれども昔は整数演算機能しかなくて浮動小数点演算処理を書く必要があった。さらに6502は演算はAレジスタでしかできなかったから非常にメモリの出し入れの多い面倒な実装になる。ソースコードにこれでもか!とコメントを入れ、さらに仕様までコメントに入れているのでとてもわかりやすい。まあコメントなしだと6502のアセンブラは簡素だから一見して何を行っているのかわからないからだろうね。むかしZ80マイコンアセンブラテクニックという本で浮動小数点演算ルーチンを見たけれども、Z80のもつレジスタを最大限に利用して実装されていたな。たしか。Z80もレジスタは6502にくらべてたくさんあるんだけれどもIX,IYレジスタは使うとパフォーマンスが落ちるので使わない方がいいとか森田さんがどこかで書いていたような。しかし懐かしいねぇ。。

でも当時の私はBASIC+ちょこっとハンドアセンブル程度のレベルだったので、浮動小数点演算はBASICに頼り切りだったけれども。恥ずかしながら。。