2005-12-14から1日間の記事一覧

VCのインラインアセンブラでC言語のマクロが使えない・・・

解決:一つ一つの命令に_asmをつければ#defineしたインラインアセンブラ構文も認識してくれるらしいですよ。hoshu氏に感謝。 例: #define MD5_VC_MMX_F3(d,x,y,z)\ _asm pxor y,z\ _asm pxor x,y\ _asm movq d,x 以下、解決前の記事

MD5 optimized in MMX part3

#define MD5STEP(f, w, x, y, z, data, s) \ ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )ってのがMD5のコアの部分をマクロ化した所なのですよ。*1 f()関数、rotation部*2はpart2で発見した最適化ですべてMMX化できます。 問題は足し算しているところ</s>…

MD5 optimized in MMX part2

MMXで最適化する場合、プロセスを二つ立てることくらいしか思いつかないよぉ〜 つまり mm0,mm1...それぞれに二つの32bitの対象分のデータを詰め込んで二つ同時に計算するって言う・・・MMX利用の際に考えられる初歩の初歩のテクニック。 例えば、file0とfile1が…

MD5 optimized in MMX

久々にプログラミングがしたくなった。 MD5はまだまだ現役のようで最適化したら皆さん使ってくれるかな〜 なんて思ったりして。 なのでgoogle:MD5 optimize][google:MD5 MMX | SSE | SSE2 | 3DNowとかしてちょっと探してみても出てこないので自分で作ってみ…