2011/06/03

CLD命令とDF

コード読んでたらCLD命令というのを見たんで調べてみました。

CLD(Clear Direction Flag)
->DFを0、つまりクリアする。

で、このDFはストリング命令の制御に関わっていまして、DFがクリアされるとストリング命令は小さいアドレスから大きい方へ向かって実行し、DFがセットされるとその逆に向かって実行します。
ちなみに、DFのセットにはSLD命令を使います。




実際のコードはこんな感じでした。
CLD
MOV ECX,0A
MOV EAX,0
MOV EDI,DWORD PTR SS:[EBP-AC]

REP STOS DWORD PTR ES:[EDI]
CLD命令の少し後にREP STOS命令があります。
これはEAXをECX個つなげたものを[EBP-AC]から大きいアドレスに向かって書きこんでいくので、
つまり[EBP-AC]から0x28バイト分を0で初期化しています。
今回のようにREP STOSはメモリの初期化でよく使われるようです。



参考:

0 件のコメント:

コメントを投稿