【发布时间】:2011-12-07 11:51:11
【问题描述】:
我已经调试了一段时间REP STOS DWORD PTR ES:[EDI]
根据我的结论,它总是使用
ECX 作为计数器。
EAX 作为将被复制到 EDI 然后附加 ECX 次的值
所以在放入EDI的尖头转储之后
它似乎用什么覆盖了 EDI 中的指向数据 似乎它总是只使用 ECX 作为计数器,同时将 EDI 更改 4 个字节。 当计数器达到 0 时它停止工作
所以我想出了这种代码
while(regs.d.ecx != 0)
{
*(unsigned int *)(regs.d.edi) = regs.d.eax;
regs.d.edi += 4;
regs.d.ecx--;
}
似乎可行.. 但我很担心,因为我只是靠运气和猜测工作做到了这一点。坚固吗?就像它总是ECX 作为计数器,EAX 作为数据,它总是复制 4 个字节,永远不会少?
【问题讨论】:
-
发现重复的 stackoverflow.com/questions/3818856/what-does-this-assembly-do 有点晚了.. 似乎一切都有效。
-
我建议您获取 AMD 的程序员手册(第 1 卷用于介绍,第 3 卷用于通用说明)以及英特尔的。不知何故,我更喜欢 AMD 的结构和表格。英特尔的似乎更详细一些。
标签: c assembly x86 machine-code code-translation