recientemente me encontré con la siguiente secuencia de instrucciones de montaje:¿Qué hace la secuencia de instrucciones de ensamblaje "rep stos" x86?
rep stos dword ptr [edi]
recientemente me encontré con la siguiente secuencia de instrucciones de montaje:¿Qué hace la secuencia de instrucciones de ensamblaje "rep stos" x86?
rep stos dword ptr [edi]
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
¿Puede dar un ejemplo de lo que hace? – COMer
@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
@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