Я уже некоторое время отлаживаю 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 байта, а не меньше?