2010-09-29 56 views

Respuesta

43

Para ecx repeticiones, almacena el contenido de eax en donde edi puntos a, incrementar o decrementar edi (dependiendo del indicador de dirección) a los 4 bytes cada vez . Normalmente, esto se usa para una operación de tipo memset.

Por lo general, esa instrucción se escribe simplemente rep stosd. Los codificadores de conjuntos experimentados conocen todos los detalles mencionados anteriormente simplemente al ver eso. :-)


ETA para la integridad (gracias PHIS): Cada iteración, ecx se decrementa en 1, y el bucle se detiene cuando llega a cero. Para stos, lo único que observará es que ecx se borra al final. Pero, para scas o similar, donde se usan los prefijos repz/repnz, ecx puede ser mayor que cero si la operación se detuvo antes de agotar ecx bytes/palabras/lo que quiera.

Antes de preguntar, scas se utiliza para implementar las operaciones de tipo strchr-type. :-P

+0

¿Puede dar un ejemplo de lo que hace? – COMer

+4

@COMer - Ya está en el borrador: como memset - llena una cantidad específica (ecx) de memoria (en [edi]) con un valor dado (en eax). – PhiS

+0

@Chris Jester-Young - para su integridad, le sugiero que mencione que también disminuirá el ecx en uno cada iteración hasta que ecx llegue a 0. – PhiS

Cuestiones relacionadas