我已经调试了REP STOS DWORD PTR ES:[EDI]
一段时间了。
我的结论是它总是使用
ECX
作为计数器。
EAX
作为将被复制到EDI
并追加ECX
次的值。
因此,在输入EDI
指向的转储后,它似乎会覆盖指向的数据。
它似乎总是只使用ECX作为计数器,同时通过4个字节更改EDI。 当计数器达到0时,它停止工作。
所以我想出了这样的代码:
while(regs.d.ecx != 0)
{
*(unsigned int *)(regs.d.edi) = regs.d.eax;
regs.d.edi += 4;
regs.d.ecx--;
}
看起来是可以工作的...但我还是有点担心,因为我只是靠运气和猜测做到的。这是否可靠?比如计数器总是ECX
,数据总是EAX
,并且它总是复制4个字节而不是更少吗?