タグ付けされた質問 「instructions」

16
ランタイムコード変更のスマートなケースはありますか?
ランタイムコードの変更(実行時にプログラム自体のコードを変更するプログラム)の正当な(スマートな)使用について考えられますか? 最新のオペレーティングシステムでは、検出を回避するためにウイルスがこの手法を使用しているため、これを実行するプログラムを嫌うようです。 私が考えることができるすべては、コンパイル時に知ることができない実行時に何かを知ることによっていくつかのコードを削除または追加するような、ある種のランタイム最適化です。

8
`testl` eax対eax?
いくつかのアセンブリを理解しようとしています。 次のようなアセンブリ、私はtestl行に興味があります: 000319df 8b4508 movl 0x08(%ebp), %eax 000319e2 8b4004 movl 0x04(%eax), %eax 000319e5 85c0 testl %eax, %eax 000319e7 7407 je 0x000319f0 とのtestl間のそのポイントを理解しよう%eaxとしてい%eaxますか?このコードの詳細は重要ではないと思います。テストをそれ自体で理解しようとしているだけです。値は常に真ではありませんか?

1
Cコードループのパフォーマンス[続き]
この質問は、ここでの私の質問に続きます(Mysticalのアドバイスに基づいて): Cコードループのパフォーマンス 私の質問を続けると、スカラー命令の代わりにパック命令を使用すると、組み込み関数を使用するコードは非常によく似たものになります。 for(int i=0; i<size; i+=16) { y1 = _mm_load_ps(output[i]); … y4 = _mm_load_ps(output[i+12]); for(k=0; k<ksize; k++){ for(l=0; l<ksize; l++){ w = _mm_set_ps1(weight[i+k+l]); x1 = _mm_load_ps(input[i+k+l]); y1 = _mm_add_ps(y1,_mm_mul_ps(w,x1)); … x4 = _mm_load_ps(input[i+k+l+12]); y4 = _mm_add_ps(y4,_mm_mul_ps(w,x4)); } } _mm_store_ps(&output[i],y1); … _mm_store_ps(&output[i+12],y4); } このカーネルの測定されたパフォーマンスは、サイクルあたり約5.6 FP操作ですが、スカラーバージョンのパフォーマンスの正確に4倍、つまりサイクルあたり4.1,6 = 6,4 FPopsであると予想されます。 重み係数の動きを考慮に入れると(それを指摘してくれてありがとう)、スケジュールは次のようになります。 movssスカラーの重み値をXMMレジスタに移動し、shufpsこのスカラー値をベクトル全体にコピーするために使用する操作の後に追加の命令がありますが、スケジュールは変更されていないようです。mulps負荷から浮動小数点ドメインへの切り替え待ち時間を考慮に入れると、重みベクトルをしばらくの間使用する準備ができているようです。したがって、これによって余分な待ち時間が発生することはありません。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.