Memoria de ensamblaje MIPS Direccionamiento “Direccionamiento pseudo directo”

5

¿Alguien podría explicar cómo funciona el direccionamiento pseudo directo en MIPS?

Realmente no entiendo cómo encaja en la imagen el uso de los últimos 4 bits de la PC (Program Counter).

Supongamos que quiero ir a la dirección

0000 0000 0000 0000 0000 0000 0000 0100

Y mi PC se ve como 0101 ...

Entonces no puedo? ¿Porque necesitaré los últimos 4 bits para parecerse a 0101 en su lugar? ¿Entonces también será algo relativo a la PC?

    
pregunta Jiew Meng

1 respuesta

4

El direccionamiento pseudodirecto MIPS toma los cuatro bits superiores del contador del programa, concatenado con los 26 bits de la dirección directa de la instrucción, concatenado con dos bits de 0 0:

PC31...PC28    IM25...IM00    0    0

que crea una dirección completa de 32 bits. Este formato es utilizado por las instrucciones de tipo J, j y jal. Dado que se utilizan los 4 bits superiores de la PC, esto limita el objetivo de salto a cualquier lugar dentro del actual bloque de código de 256 MB (1/16 del total del espacio de direcciones de 4 GB). Para saltar a cualquier lugar dentro del espacio de 4 GB, se utilizan las instrucciones de tipo R jr y jalr, donde se especifica la dirección de destino de 32 bits completa en un registro.

La razón para forzar los dos bits inferiores a 0 es que todas las direcciones de instrucciones en MIPS están alineadas por palabra de 32 bits, por lo que nunca puede tener una dirección de destino de una instrucción de salto con los dos bits distintos de 0 0.

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas