Registros del camino de datos del Mips

De Wikitronica
Revisión del 14:48 16 jun 2013 de Anacancino (Discusión | contribuciones) (Página creada con « Tabla de Registros del Camino de Datos del MIPS. == Introducción == == Registros Generales == Un registr...»)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar


Tabla de Registros del Camino de Datos del MIPS.



Introducción

Registros Generales

Un registro es una parte del procesador que puede contener un patrón de bits. En el MIPS, un registro contiene 32 bits. Hay muchos registros en el procesador, pero sólo algunos de ellos son visibles en lenguaje ensamblador. Los otros son utilizados por el procesador para llevar a cabo sus operaciones.


Los registros de propósito general son aquellos que se usan comúnmente al programar en lenguaje ensamblador. Sin embargo también existen otros registros que se usan para hacer operaciones con punto flotante. Los registros de propósito general están numerados del $0 al $31. Cada registro de propósito general tiene un patrón de 32 bits. Sin embargo por convención (y a veces por el hardware) los diferentes registros se usan para diversos propósitos.


- $0 – Registro $zero

Este registro es cero permanentemente, esto significa que está configurado para contener siempre el valor 0x00000000 (todos los bits a cero). Si se escribe algo en este registro, se perderá la información; ya que lo ignorara y el registro será cero.


- $1 – Registro $at

Este registro es el ensamblador temporal (assembler temporary). Este registro se utiliza mucho al hacer operaciones ya que comúnmente se guarda en este registro y después de aquí se copia a otro registro.


- $2, $3 – Registro $v0 a $v1

Estos registros se utilizan para los valores que son retornados por una subrutina. Por lo que no son preservados al ser llamados a las subrutinas y son modificables en ellas.


- $4, $7 – Registro $a0 a $a3

Estos registros guardan los argumentos para las subrutinas. Tal como la convención de software lo indica, estos registros pueden ser modificados dentro de las subrutinas.


- $8, $15 y $24, $25 – Registros $t0 a $t9

Estos son registros temporales. Según la convención es posible modificar estos registros en una subrutina o fuera de ella ya que se supone que los valores que devuelve no se vuelven a utilizar durante el programa.


- $16, $23 – Registro $s0 a $s7

Estos son los registros guardados. Según la convención de software se dice que estos registros no deben ser modificados al ingresar a una subrutina. Por esta razón se debe guardar la información antes de llamarse a la subrutina.


- $26, $27 – Registro $k0 a $k1

Estos son los registros Kernel. Los registros kernel son utilizados por el sistema operativo.


- $28 – Registro $gp

Registro para el global pointer.


- $29 – Registro $sp

Registro para guardar el stack pointer. Este registro apunta a la última dirección del stack.


- $30 – Registro $fp

Registro para guardar el frame pointer


- $31 – Registro $ra

Registro para guardar el return address




Otros registros

Existen otros 32 registros que van desde el $f0 hasta el $f31 que son para los números representados en punto flotante.

Referencias

‘’Mips Tutorial Universidad de Connecticut:’’ http://chortle.ccsu.edu/AssemblyTutorial/index.html

http://msdn.microsoft.com/en-us/library/ms253512(v=vs.80).aspx

Contributors

Anacancino, JCaceres