CPUとアセンブリ

言語としてのx86アセンブリ(gasとかnasmとか)は微妙に分かってるけど、CPUの動きには詳しくないので、書いてみたもののあまりよい結果にならないことが多い。素人的には計算数が減ればその分速くなるだろうと思っていたけど、ぜんぜんそうでもない。ある程度までの計算なら計算結果をメモリにキャッシュするよりも何度でも再計算したほうが速いことがあるし、SIMDで4つ同時に計算しても逆に遅くなることがある。このへんはCPUのキャッシュとか命令のレイテンシとかが絡んでるんだろうとは思うけど、パッと最適な方法が分からない。試してみてどうだったーレベル。
言語の文法だけ分かっていてもあまり意味ねえという話。
もともと自分がアセンブリ言語をやった理由は、HackersLab にあったsuidされたバッファオーバーフローするプログラムがあるからそれのexploitを書いて乗っ取れみたいな問題のためだったし、その後も犯罪的なプログラムを書いてみたり、Winnyを解析したりとか、そういう怪しげな知識だし、まあこんなものだくそがーという感じなので、もっとがんばろう。