registros visibles al usuario

Anuncio
UCLV 1
Mapas conceptuales para la enseñanza de Arquitectura de Computadoras
REGISTROS VISIBLES AL USUARIO
Se dice que un registro es visible al usuario para significar el hecho de que puede
ser referenciado por medio del lenguaje máquina que ejecuta la CPU. Se pueden
clasificar en las siguientes categorías:
Uso general
Datos
Direcciones
Códigos de condición
Los registros de uso general pueden se asignados por el programador a diversas
funciones. A veces, su uso dentro del repertorio de instrucciones es ortogonal a la
operación. Es decir, cualquier registro de uso general puede contener el operando
para cualquier código de operación. Esto proporciona una utilización de registros
de auténtico uso general. Con frecuencia, sin embargo, existen restricciones, por
ejemplo puede haber registros específicos para operaciones con coma flotante y
operaciones de pila.
En algunos casos, los registros de uso general pueden utilizarse para funciones de
direccionamiento. En otros casos hay una separación parcial o total entre registros
de datos y registros de direcciones, los primeros pueden usarse únicamente para
contener datos, y no pueden emplearse en cálculo de una dirección de un
operando. Los registros de dirección pueden ser de uso más o menos general, o
pueden estar dedicados a un modo de direccionamiento particular. Se pueden citar
los siguientes ejemplos:
Punteros de segmento: En una máquina con direccionamiento segmentado un
registro de segmento contiene la dirección de la base del segmento. Puede haber
múltiples registros, por ejemplo uno para el SO y otro para el proceso actual.
Registros índices: Se usan para el direccionamiento indexado, y pueden ser auto
indexado.
Puntero de pila: Si existe direccionamiento a pila visible al usuario, la pila está
normalmente en memoria, y hay registro dedicado que apunta a la cabecera de
esta. Esto permite el direccionamiento implícito, es decir, apilar, desapilar y otras
instrucciones de la pila que no necesitan contener un operando explícito referente
a ella.
Aquí hay varias cuestiones de diseño a estudiar, una importante es si se usan
registros de uso completamente general o si especificar su uso.
Con el uso de registros especializados, generalmente puede quedar implícito en el
código de la operación a qué tipo de registro se refiere un determinado campo de
operando. El campo de operando solo debe identificar uno de entre un conjunto de
registros especializados, en lugar de uno de entre todos los registros, lo cual ahorra
bits.
UCLV 2
Mapas conceptuales para la enseñanza de Arquitectura de Computadoras
Por otra parte, esta especialización limita la flexibilidad del programador. No hay
una óptima y definitiva solución a este problema de diseño.
Otro problema de diseño es la cantidad de registros de uso general o de datos más
direcciones que tienen que incluirse. Por último está la cuestión de la longitud de
los registros, los registros que han de contener direcciones deben ser lo
suficientemente grandes como para albergar la dirección más grande. Los registros
de datos deben ser capaces de contener valores de la mayoría de los tipos de datos,
algunas máquinas permiten que dos registros contiguos sean usados como uno
solo para contener valores de doble longitud.
Una última categoría de registros, que es al menos parcialmente visible al usuario,
contiene códigos de condición, los códigos son bits fijados por el hardware de la
CPU como resultado de alguna operación. Los bits de código de condición se
reúnen en uno o más registros, normalmente forman parte de un registro de
control. Por lo general las instrucciones de máquina permiten que estos bits sean
leídos por referencia implícita, pero no pueden ser alterados por el programador.
En algunas máquinas, una llamada a una subrutina dará lugar a la salvaguarda
automática de todos los registros visibles por el usuario, que serán restablecidos
en el retorno de la subrutina. La CPU lleva a cabo la salvaguarda y restablecimiento
como parte de la ejecución de las instrucciones de llamada y retorno,
respectivamente. Esto permite a cada subrutina usar independientemente los
registros visibles por el usuario. En otras máquinas, es responsabilidad del
programador guardar los contenidos de los registros visibles relevantes para él,
antes de la llamada a la subrutina, teniendo que incluir, en el programa,
instrucciones para este fin.
Descargar