El direccionamiento en la mayoría de los núcleos de CPU que conozco funciona por byte. No direccionas bits individuales.
El MIPS requiere que sus instrucciones estén alineadas con 4 bytes (palabra) , es decir, las dos LSB s son siempre cero. De esa manera, no están codificadas en las instrucciones.
La respuesta de
@ sherrelbc lo explica bastante bien, aunque me gusta más la semántica de "word-align" , que "word-Address" .
El enlace @valcroft dio también tiene la respuesta a medio página:
Direccionamiento pseudo-directo
Direccionamiento directo significa especificar una dirección completa de 32 bits en la propia instrucción. Sin embargo, dado que las instrucciones MIPS son de 32 bits, no podemos hacer eso. En teoría, solo necesita 30 bits para especificar la dirección de una instrucción en la memoria. Sin embargo, MIPS usa 6 bits para el código de operación, por lo que todavía no hay suficientes bits para hacer direccionamiento directo verdadero.
En su lugar, podemos hacer direccionamiento pseudo-directo. Esto ocurre en las instrucciones j.
| Opcode | Target |
|---------|----------------------------------|
| B31-26 | B25-0 |
| oooo oo | tt tttt tttt tttt tttt tttt tttt |
Se usan 26 bits para el objetivo. Así es como se calcula la dirección para el direccionamiento pseudodirecto.
PC <- PC31-28::IR25-0::00
Tome los 4 bits principales de la PC, concatene eso con los 26 bits que forman el objetivo y concatene con 00. Esto produce una dirección de 32 bits. Esta es la nueva dirección de la PC.
Entonces, 26 bits a la izquierda desplazados por dos dan un límite de dirección relativo de \ $ 2 ^ {28}. \ $
\ $ 2 ^ {28} bytes \ $ es \ $ 256 MiB \ $, o \ $ 256 * 1024 ^ 2 \ $.