いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

/Os, /Ot

ひょんな事から、コンパイラの最適化オプションについて調べていたのですが、その中でちょっと発見したものを。
/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のパイプラインが云々…という問題につながってくるのだろうか……。 う〜ん、よくわからず…。

この辺りの知識も知っておいた方が、いざと言う時便利なんでしょうが…なかなか大変そうだなぁ〜。^^;