Сборка Как преобразовать REP STOS в код C

Я отлаживал REP STOS DWORD PTR ES: [EDI] какое-то время

Из моего заключения он всегда использует

ECX как счетчик. EAX как значение, которое будет скопировано в EDI , а затем добавлено ECX раз {{ 1}} поэтому после помещения указанного дампа 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 байта, не меньше?

5
задан SSpoke 14 October 2011 в 05:52
поделиться