アカウント名:
パスワード:
汎用のデジカメRaw現像ソフト。デコード部分のコードにコンパクトでパズルチックなものが多い。
富豪的プログラミングの名のもとに直接的なコードしか書けない自分には,なかなか参考には出来ないもののこういう世界もあるんだなと考えさせられる。
ちなみに,外部ライブラリを除けば単一ファイルで完結するソフトで,最新版の行数は9,519行と異常に長いのも特徴的。
レジスタに0代入より、自レジスタとXORの方が1クロック速い
クロックは同じで、命令が短いっていう印象。
xorというとビット反転に使うけど、プログラミングを始めた頃、BASICでA=1-Aとして0と1を切り替えていたのを見たときちょっと感動した記憶があります
クロック数と言えば、8086で、乗算を使わずに別の命令に展開するのもあったな。
今だと、ほとんど意味がなくなっているテクニックなんだろうな。これ。
整数変数×整定数だと今でもいろいろやるよ。 x86_64 の gcc で -O2 を付けてコンパイルしたら、シフトやら加減算やら LEA [mztn.org] やらに展開される。
lea命令って便利だよね。
a = a * 5; が lea eax,[eax+eax*4] になったりする。
これを便利と呼ぶか、 5 倍はできるけど 6 倍はできないなんて不便と呼ぶかは人による気がする……。
LEAってなんの役に立つんだって思ってたけど、こういうことをするための命令だったんですね。納得。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
dcraw.c (スコア:2)
汎用のデジカメRaw現像ソフト。
デコード部分のコードにコンパクトでパズルチックなものが多い。
富豪的プログラミングの名のもとに直接的なコードしか書けない自分には,
なかなか参考には出来ないもののこういう世界もあるんだなと考えさせられる。
ちなみに,外部ライブラリを除けば単一ファイルで完結するソフトで,最新版の行数は9,519行と異常に長いのも特徴的。
Re: (スコア:3, 興味深い)
今を去ること数十年前、アセンブラ(というよりマシン語)で
事故^h^h自己書き換えをする処理を見たときとか
レジスタに0代入より、自レジスタとXORの方が1クロック速いとか見たとき
ちょっと感動した記憶があります
Re: (スコア:3)
クロックは同じで、命令が短いっていう印象。
xorというとビット反転に使うけど、プログラミングを始めた頃、BASICでA=1-Aとして0と1を切り替えていたのを見たとき
ちょっと感動した記憶があります
Re: (スコア:0)
クロック数と言えば、8086で、乗算を使わずに別の命令に展開するのもあったな。
今だと、ほとんど意味がなくなっているテクニックなんだろうな。これ。
Re: (スコア:2)
整数変数×整定数だと今でもいろいろやるよ。 x86_64 の gcc で -O2 を付けてコンパイルしたら、シフトやら加減算やら LEA [mztn.org] やらに展開される。
Re:dcraw.c (スコア:1)
lea命令って便利だよね。
a = a * 5; が lea eax,[eax+eax*4] になったりする。
Re:dcraw.c (スコア:2)
これを便利と呼ぶか、 5 倍はできるけど 6 倍はできないなんて不便と呼ぶかは人による気がする……。
Re: (スコア:0)
LEAってなんの役に立つんだって思ってたけど、こういうことをするための命令だったんですね。納得。