アカウント名:
パスワード:
signed→算術unsigned→論理
だが、確かにローテートがないのはとても困る時があるしCらしくもない。
ローテート使いたきゃレジスタ変数にしておいてインラインアセンブリを使う。あるいはルーチンごとアセンブラ化する。ローテート使わなきゃ実現できないって、速度効率しか理由が無いと思うがCPUにその命令がなきゃ効率が上がらないんですから
でも、CPUの実行コードが想像できるような言語でなければ速くできないという「神話」はまだまだ健在ですね。単純にC/C++以外のコンパイラにはそれほど金が掛けられていないだけなのか、現在のコンピュータはまだ抽象度の高い言語を人間様ほど賢く最適化できないためなのかは知りませんが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
論理ローテートがない (スコア:0)
ローテートしたいだけなのに、
シフト2回 + AND1回 + OR1回
に分解しなきゃならん・・・
Re: (スコア:1)
signed→算術
unsigned→論理
だが、確かにローテートがないのはとても困る時があるしCらしくもない。
Re: (スコア:0)
ローテート使いたきゃレジスタ変数にしておいてインラインアセンブリを使う。
あるいはルーチンごとアセンブラ化する。
ローテート使わなきゃ実現できないって、速度効率しか理由が無いと思うが
CPUにその命令がなきゃ効率が上がらないんですから
Re: (スコア:1, 参考になる)
アセンブラで書けば速くなるなんていうのは、
ヘタでも手間をかければ必ず料理が美味しくなる
というのと同じくらい間違ってる。
マイクロソフトのCコンパイラに関して言えば、
インライン・アセンブラを使うよりも、intrinsicなローテート関数を呼んだほうが、
速いコードを生成してくれますから、ローテートのために1行でもアセンブラを使うのは、無駄です。
--
デバッグ・ビルドだと律義に関数を呼び出すので、恐ろしく遅くなるので、
デバッグ・ビルドのために#ifdefで、シフトを組み合わせたマクロに置き換えるという間抜けなことも必要ですが。
Re:論理ローテートがない (スコア:0)
でも、CPUの実行コードが想像できるような言語でなければ速くできないという「神話」はまだまだ健在ですね。
単純にC/C++以外のコンパイラにはそれほど金が掛けられていないだけなのか、現在のコンピュータはまだ抽象度の高い言語を人間様ほど賢く最適化できないためなのかは知りませんが。