« 2009年1月 | トップページ | 2009年3月 »

2009/02/23

無限ループは仕様です

本番前が近いと、演奏会の曲が頭の中で無限ループします。
仕様です。
仕様書にも、そうかいてあります。
(なんの仕様書だ?)

花粉が心配だ。
集中力も切れるし、鼻のなかに鼻水がたまるから演奏しずらいし。
目もかゆいから、楽譜を満足に見れないし。 まぁ、指が覚えれば良いんだけど…。

続きを読む "無限ループは仕様です"

| | コメント (0) | トラックバック (0)

2009/02/19

C++

最初に言っておくが、
『パンを尻にはさんで右手の指を鼻の穴に入れて左手でボク
シングをしながら「いのちをだいじに」と叫んではいけない。』
の事では無いので、その辺、宜しく。

興味心で、"Microsoft Visual C++ express edition 2008"をダウンロードして使ってみていました。
元々、アセンブリ言語使いなので、C++だけではプログラム組めないからと、コードリスティングしてアセンブリソースを吐くコンパイラオプションを設定しておきながら遊んでいたのです。

いやぁ、ぷらぷら様かしこいわ。
Pentium世代は、人間の手で最適化できるようなもんじゃないからCで書けとは言うが、確かに細かい所まで処理速度を最適化してくれている。

流石に、Cソースの書き方によっては遅くなるけど、どういうコードを吐くのか意識しながら(アセンブラレベルでどうなるのかな?という事。)、Cソースを書いておけば、下手にアセンブリ言語を書くより早くなる。
というより、アセンブリ言語で書くにも、あんなアセンブリ言語書きたくない。可読性がすごい悪い。

続きを読む "C++"

| | コメント (0) | トラックバック (0)

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音源ドライバーを組んだ時の反省点は盛り込んでいるので、だいぶ、スマートな形にはなったと思う。

| | コメント (0) | トラックバック (0)

« 2009年1月 | トップページ | 2009年3月 »