2011-08-29 12 views
9

Parece que no entiendo el concepto de estas cosas, incluso con la ayuda de Google y un libro de texto en la mano.Aclaraciones sobre las instrucciones de carga y firma firmadas/no firmadas (MIPS)

Siguiendo el formato (código de operación, rs, rt, offset) ...

  • ¿Firmas extender el desplazamiento antes de añadir al valor de la dirección? ¿O agregar antes de extender?
  • En el caso de lb y lbu, ¿cuál es la diferencia? ¿También sigue la definición aritmética de MIPS que 'unsigned' solo significa que no informará un desbordamiento?
  • ¿Por qué no lw tienen una versión sin firmar? Incluso las instrucciones de almacenamiento no tienen uno ...

Respuesta

23

En el caso de lb y lbu, ¿cuál es la diferencia? instrucciones

La "carga" byte lb y lbu carga de un solo byte a byte más a la derecha de un registro de 32 bits. ¿Cómo se configuran los 24 bits superiores? La operación sin signo los establecerá en cero; la operación firmada será sign-extend el byte cargado.

Por ejemplo, supongamos que lee el byte 0xFF de la memoria. lbu 0-extender este valor a 0x000000FF e interpretarlo como 255, mientras que lb lo firmará-extenderlo a 0xFFFFFFFF, que se interpreta como -1.

¿Por qué no tiene lw una versión sin firmar? Incluso las instrucciones de almacenamiento no tienen uno ...

La instrucción "boca de carga" (lw), por el contrario, se carga una cantidad de 32 bits en un registro de 32 bits, lo que no hay ambigüedad, y no es necesario tener una versión firmada especial.

Si está almacenando menos de una palabra completa de 32 bits, no hay nada que pueda hacer con los bits adicionales en el registro, excepto tirarlos (ignorarlos).

¿También sigue la definición aritmética de MIPS que 'unsigned' solo significa que no informará un desbordamiento?

Creo que esta convención es solo para las instrucciones de sumar y restar. Para las otras instrucciones, firmado/sin firmar indica si se realizará la extensión de letrero.

¿Firma usted extiende el desplazamiento antes de agregarlo al valor de la dirección? ¿O agregar antes de extender?

Si un desplazamiento tiene extensión de signo, solo tiene sentido hacerlo antes de agregarlo a la dirección base. Creo que una revisión de la aritmética two's complement aclarará esto.

+0

¡Simplemente la respuesta que estaba buscando, gracias! – Check

+0

¿Qué pasa con save byte 'sb'? ¿El signo de bytes está extendido o no extendido antes de guardarlo? – NoName

Cuestiones relacionadas