【发布时间】:2016-12-11 19:37:18
【问题描述】:
在反汇编中,我经常看到正在使用字符串操作指令而不考虑方向标志(DF)的状态,如下所示:
or ecx, 0FFFFFFFFh
xor eax, eax
mov edi, ebp
repne scasb
CLD 或 STD 指令自函数开始后未找到,也未找到其他可能影响 DF 标志的指令。
那么编译器是否假定自程序启动以来此标志的预定义状态,由加载程序提供,并在程序运行时保持不变?
【问题讨论】:
-
复位时,方向标志被清除。在更改之前保存
DF并在之后恢复它被认为是礼貌的。 -
调用约定/ABI 指定
DF的状态,编译器依赖于此。
标签: assembly x86 flags cpu-registers