読者です 読者をやめる 読者になる 読者になる

組み込み関数

DirectX

Visual C++ 2005 では組み込み関数がいくらか拡充されています.Visual C++ 2005 での x64 アプリケーション開発では今までのように困ったときのインラインアセンブラ頼り,とはいかなくなったので,予めどんな組み込み関数があるか一通り眺めておくと良いでしょう.
http://msdn2.microsoft.com/library/w5405h95%28en-us,vs.80%29.aspx

__rdtsc
おなじみ rdtsc 命令でクロックカウンタを取得.
__movsb, __movsw, __movsd, __movsq
string 命令による rep movsX.
__stosb, __stosw, __stosd, __stosq
string 命令による rep stosX.
_bittest, _bittest64
bt 命令による指定ビット目の評価.
_BitScanForward, _BitScanForward64
bsf 命令により bit0 から始めて最初に立っているビットを探す.
_BitScanReverse, _BitScanReverse64
bsr 命令により MSF から始めて最初に立っているビットを探す.

あわせて Hacker's Delight も読んでおくと面白いかもしれませんね.

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか

  • 作者: ジュニア,ヘンリー・S.ウォーレン,Jr.,Henry S. Warren,滝沢徹,玉井浩,鈴木貢,赤池英夫,葛毅,藤波順久
  • 出版社/メーカー: エスアイビーアクセス
  • 発売日: 2004/09
  • メディア: 単行本
  • 購入: 33人 クリック: 683回
  • この商品を含むブログ (123件) を見る

例えば _BitScanReverse については nlz の項に典型的な RISC 命令での実装例が載っています.
http://www.hackersdelight.org/HDcode/nlz.cc
DirectX でも,例えばテクスチャの辺の長さを次に大きな 2 の累乗に合わせる場合にこの計算が必要となります.実際何度もこれを計算するコードを書いたことがあるという方もおられるのではないでしょうか.まあ今後は組み込み関数で書いてしまうという方法もひとつの手ではあるでしょうということで.