« マーフィーの法則 at Jan, 2009 連休 | トップページ | C++ »

2009/02/02

8086なアセンブリ言語

学生時代に書いてたソースとか眺めていたんだけど、ある癖に気付いた。
せっかくある、si, di レジスターをあまり使ってなくて、bx と dx レジスターだけで何とかしちゃってる癖が…。
xchg bx,dx 命令や、push pop命令が所々にあるわけです。

・・・今思うと、普通にdi si レジスタ使えよと思うのだが、その他サブルーチンの8bitで渡す引数で、ahレジスタに入れるのを指定するとか…
今見てみると、阿呆としか思えない。
di si レジスタにして、stos命令や、 lods命令や、 movs命令使えよって所が所々にあるわけです。
rep命令や、loop命令も使わないで、dec cx命令 と、jz 命令でしてたりな。
あぁ、Z80的な組み方だなぁ~。

WonderSwan用の音源ドライバー(WTD)を書いた時は、流石に、レジスターをフルに、bpレジスターまで使って組んであるけど。
bx bp diレジスターに制御用構造体の先頭オフセットが入ってるわけです。
siは、演奏ポインタっぽい。


あれは、3MHzのCPUで、如何に負かをかけないで音楽&効果音を鳴らすか?だから、それなりに最適化して作ったつもりなんだけど、今ソースみると、こう組めばよかったなぁ~と思うところが何箇所が見つかる。
でも、それを直すと、全体的に直さないと行けなくなるから、できなひヨ。
でも、PC98用のFM音源ドライバーを組んだ時の反省点は盛り込んでいるので、だいぶ、スマートな形にはなったと思う。

|

« マーフィーの法則 at Jan, 2009 連休 | トップページ | C++ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/36969/43936923

この記事へのトラックバック一覧です: 8086なアセンブリ言語:

« マーフィーの法則 at Jan, 2009 連休 | トップページ | C++ »