tutorial registers lenguaje language instruction ensamblador assembly x86

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