assembly - registers - lenguaje ensamblador x86
¿Qué hace la secuencia de instrucción de ensamblaje x86 "rep stos"? (1)
Recientemente me encontré con la siguiente secuencia de instrucciones de ensamblaje:
rep stos dword ptr [edi]
Para las repeticiones ecx , almacena el contenido de eax en el lugar donde edi apunta, incrementando o disminuyendo edi (dependiendo del indicador de dirección) en 4 bytes cada vez. Normalmente, esto se usa para una operación memset - memset .
Por lo general, esa instrucción simplemente se escribe como rep stosd . Los codificadores de conjuntos experimentados conocen todos los detalles mencionados anteriormente simplemente al ver eso. :-)
ETA para completar (gracias PhiS): cada iteración, ecx se decrementa en 1, y el ciclo se detiene cuando llega a cero. Para stos , lo único que observará es que ecx se borrará al final. Pero, para scas o similar, donde se repnz prefijos repz / repnz , ecx puede ser mayor que cero si la operación se detuvo antes de agotar ecx bytes / words / whatevers.
Antes de preguntar, scas se usa para implementar las operaciones de strchr - strchr . :-PAG