05:19:10VSがはくアセンブリなんて、基礎から遠いところにあると思うがな・・・。アセンブリレベルの最適化を学ぶということは、CPUアーキテクチャを学ぶこととほぼ同義。インテルのサイトからマニュアル落としてこいよ。>>319のような質問をするってことは、「80386/80486プログラミングガイド」辺りを読んでより造詣を深めたほうがほうがいいかもしれない。最適化の話は全く出てこないが。その後はせいぜいSIMD命令くらいだし。00:55:48>プリフィックスが変だったりムダにLOCKとかの指定がついてたり、jmp先が命令の狭間になってないかで見る。03:56:14>>347そゆのは例外でしょ。同じコードに複数の意味を持たせる場合も有るし、そういうガチガチに手を加えてある箇所は手で位置を指定しなおさないと。広範囲の自己書き換えはパッカー(UPX等)とか耐タンパ手法とかで今でも使われてるから出来なくは無いかと思うけど、命令のキャッシュ機能はあるはず。Win32APIにFlushInstructionCacheってのがあるけど、これはマルチプロセッサで命令キャッシュをクリアするモノらしい。21:12:49>>348そのまさかだったらしい。ttp://blogs.msdn.com/oldnewthing/archive/2003/12/08/55954.aspxcall/retでのキャッシュクリアが目的だそうで。computers.>この機能はマルチプロセッサコンピュータのみで有効です。98はシングルプロセッサコンピュータのみをサポートします。ことだから、"Win9xでダミー関数なのは"公式らしい。コメントの方だと広域ジャンプでパイプラインハザードが起きてパイプラインが破棄されるとかその辺の話をしている・・・のか?MSDNだとマルチプロセッサで有効(もしくは有効にする予定)の機能らしいが、コメントでマルチ??に触れてる奴がいないしちょっとアテにならん気がする。95年代のCPU事情だとマルチコアはPC用途では考慮もされずワークステーションのごく一部実装されたマルチプロセッサで走るNT系のみをターゲットにしたAPI設計なのだろうけれど、現代のHT/マルチコアではどう作用するのだろう?>>353retはアトミックにスタックのポップを実行すると思われる。ecxとかだとアトミックに実行されることは保障されないし、レジスタも一個浪費する。あと、解析系のプログラムはretを期待するはずなのでその辺の違い。04:24:22引数はER0に乗ってきて、関数中ではそれをER2に持つ。*srcpをER0のまま使えるのに。RxにE0を使い、loop中でE0→ER1に毎回ゼロ拡張が起きる。RxにR1を使えばloop前にE1を1回だけゼロにしとけば済むのに。