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