ひょんな事から、コンパイラの最適化オプションについて調べていたのですが、その中でちょっと発見したものを。
/Os、/Ot (実行可能ファイルのサイズの優先、実行速度の優先) [ローカル] の項目を見ていたのですが、ある変数に「71」を掛けるアセンブラコードで…
mov eax, DWORD PTR _x$[ebp]
imul eax, 71 ; 00000047H
という2命令より mov eax, DWORD PTR _x$[ebp]
mov ecx, eax
shl eax, 3
lea eax, DWORD PTR [eax+eax*8]
sub eax, ecx
という5命令で構成しさせた方が高速らしい……。
…理由が全然わかりませんわ。^^;
CPUのパイプラインが云々…という問題につながってくるのだろうか……。 う〜ん、よくわからず…。
この辺りの知識も知っておいた方が、いざと言う時便利なんでしょうが…なかなか大変そうだなぁ〜。^^;