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]
これはEAXをECX個つなげたものを[EBP-AC]から大きいアドレスに向かって書きこんでいくので、
つまり[EBP-AC]から0x28バイト分を0で初期化しています。
今回のようにREP STOSはメモリの初期化でよく使われるようです。
参考:
- IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル
- アセンブラ入門
- ストリング命令(ブロック転送命令)
0 件のコメント:
コメントを投稿