Pregunta

En x86 GNU Assembler hay diferentes sufijos para las operaciones relacionadas con la memoria. Por ejemplo:.

movb, movs, movw, movl, movq, movt(?)

Ahora mi pregunta es la siguiente:

¿El sufijo tiene ningún efecto sobre la forma en que el procesador está recibiendo los datos de la memoria principal o siempre será uno o más trozos de 32 bits (x86) cargados en la memoria caché?

¿Cuáles son los efectos al lado del acceso a la memoria?

¿Fue útil?

Solución

No son "sufijos". Se encuentra en el seis instrucciones de máquina distintas. Cada uno de ellos se mueve una cantidad diferente de datos. movb sólo se mueve un byte, por ejemplo.


Ok, ahora veo que estabas preguntando por caché. Siempre será el caso de que sólo las líneas de caché completo se mueven en la caché. Si la caché es de 16 bytes de ancho, por ejemplo, entonces 16 o 32 bytes es lo que va a ser movido desde la memoria principal (una o dos líneas de caché).

Sin embargo, lo que se mueve desde la memoria caché en los registros depende de la instrucción.

Otros consejos

No afecta a cómo se hacen los accesos de memoria; la única cosa que puede afectar que es el ancho del bus de datos de la CPU. Todo lo que afecta es la granularidad de las operaciones sobre los datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top