x86
で方向フラグがどのように機能するのか分かりません。私の講義のテキストは、それ刻みまたはデクリメントソースまたは先レジスタと言うが、それは、その名前と意味がありません。誰かが何をしているのか説明できますか?x86の方向フラグ
5
A
答えて
7
このフラグは文字列操作で使用され、文字列が低いアドレスから始まり上位のアドレスに進むかどうかを指定します。文字列手順について
、ECX
はDS:ESI
は、送信元アドレスを有し、ES:EDI
先(したがってSESI
およびD EDI
で)を有し、反復回数を有します。各反復後
、ECX
は、一つ、及びESI
EDI
とデクリメントされるかEFLAGS.DF
に従って(ワード操作等のための2バイトの操作の1)素子サイズによって増減されます。
EFLAGS.DF
場合はそうでない場合は減算している、0
、ESI
とEDI
がインクリメントされています。
4
方向フラグに依存する命令の例として、rep movsb
を考えてみましょう。
を送信する場合は、送信元アドレスをesi
、宛先アドレスをedi
、送信先をecx
と指定します。プロセッサは基本的にループを実行します。通常の場合(方向フラグがクリアされている場合)は、ループの繰り返しごとにesi
とedi
をインクリメントするので、コピー元のブロックとコピー先のブロックの先頭を指すように初期化します。 REP MOVSB
を実行している間、プロセッサはコピー元のブロックの最後に到達するまで、ソースアドレスと宛先アドレスをインクリメントします。
directionフラグが設定されている場合、プロセッサは代わりにレジスタをデクリメントします。つまり、コピー先のメモリブロックの末尾を指している必要があります。最初から始めて最後にコピーするのではなく、最後から始まり、最初になるまで後方にコピーします。
関連する問題
- 1. は、Herokuのにフラスコ
- 2. 3D同じフラの回転とズーム
- 3. チェックボックスの問題グリッド表示のヘッダー
- 4. Visual StudioのグリッドCrystal Reports by SAP
- 5. 方法:x86のpow(real、real)
- 6. X86エクステンションの書き方
- 7. Android Studioのグリッド表示が重複していますか?
- 8. dropinsディレクトリの "Eclipse-BundleShape:dir"を使用しているプラグ
- 9. キャンバスの方向性の方向
- 10. x86とx64の両方のコンパイル
- 11. x86アセンブリのバッファ
- 12. x86アセンブリコードのマクロ
- 13. 変数のx86
- 14. のx86復号
- 15. アセンブリのx86 -
- 16. デルファイのx86コードジェネレータフレーム
- 17. x86アセンブリコード
- 18. x86インラインアセンブラフラグ
- 19. x86アセンブリエラー
- 20. x86アセンブリランゲージミッドポイントサークルアルゴリズム
- 21. 式指向の方針指向のアプローチ
- 22. ブーツラップの縦方向と横方向の両方の中心モダル
- 23. 単一アプリケーションでの順方向ジオコーディングと逆方向ジオコーディング:必要な方向
- 24. UICollectionViewの項目フロー方向が垂直方向、スクロールが水平方向
- 25. @OneToOne単方向および双方向
- 26. Doctrine - OneToOne単方向対OneToOne双方向
- 27. x86 ASMを扱う方法jc
- 28. 垂直方向と水平方向の両方のデータ
- 29. 理解のx86アセンブリコード
- 30. ガスx86の:switch文
したがって、それに応じて文字列を増減します。文字列が下位のアドレスから始まっている場合は、それに追加するか、それ以外の場合は逆のアドレスを実行しますか? –
文字列内の**ポインタ**を増減します。 –
Nathan Fellman、@ Jerry Coffin、私は、デフォルトの動作はメモリブロック(DFがクリアされた)の先頭からコピーすることだと思います。どのような場合には、代わりにメモリブロックを最後からコピーするか(DFセット)? – golem