2012-01-27 9 views
7

Estoy leyendo el libro 'Computer Organization and Design' por Patterson y Hennessy y me interesé en MIPS.MIPS rango de instrucción de salto

Tengo dudas en encontrar el rango de una instrucción de salto/bifurcación. También para determinar el número de instrucciones de salto/ramificación requeridas para llegar a una dirección específica.

¿Alguien puede dar una explicación de cómo se debe calcular esto, es decir, considerar la PC en una dirección específica y encontrar el número de instrucciones de salto/rama necesarias para ir a una dirección diferente? Por ejemplo, ¿qué pasa si la PC está en 0x10001010, cuál es el rango de direcciones de las instrucciones de salto y bifurcación?

¿O puede dirigirme a algún recurso en línea o libro que me ayudaría a obtener una mejor comprensión de estos?

+0

Consulte los manuales de instrucciones de MIPS. Explican cómo se codifican las instrucciones. – m0skit0

Respuesta

9

Lo siguiente es todo para MIPS-32.

Branch B, BEQ, BNE, etc. las instrucciones tienen un poco firmó 16 palabra campo de desplazamiento, lo que permite una rama a una dirección de +/- 128 Kbytes desde la ubicación actual. Una instrucción J de salto especifica una dirección dentro de la región actual de 256MByte especificada por los 4 bits más significativos de PC: 26 < < 2 bits (esto es no una dirección relativa). Para ramificar a una dirección arbitraria en cualquier lugar del espacio de direcciones de 4GB, use JR (registro de salto) que salta a una dirección contenida en un registro de propósito general.

Toma una sola rama o instrucción de salto, o una carga de registro seguida de un JR para saltar a una dirección arbitraria, dependiendo de qué tan lejos esté la dirección.

El mejor libro para la programación de MIPS sigue siendo See MIPS Run. También puede encontrar los manuales de referencia de la arquitectura MIPS en mips.com (es necesario registrarse). El documento más relevante es MIPS32® Architecture for Programmers Volume II: El conjunto de instrucciones MIPS32®.