Definición: ¿Qué significa Asignación de registros?
La asignación de registros se refiere a la práctica de asignar variables a los registros, así como de manejar la transferencia de datos hacia y desde los registros. La asignación de registros puede ocurrir:
- En un bloque básico, conocido como asignación de registro local
- Sobre una función o procedimiento completo, conocido como asignación de registro global
- Sobre los límites de la función atravesados por medio de un gráfico de llamadas, conocido como asignación de registro entre procedimientos
Techinfo explica la asignación de registros
Durante el transcurso de la compilación, el compilador debe determinar la forma en que las variables se asignan a un rango pequeño y específico de registros. Algunas de las variables pueden no estar en uso o se dice que están "activas" simultáneamente. Esto lleva a asignar algunos registros a múltiples variables. No obstante, no se pueden asignar dos variables en vivo simultáneas al mismo registro exacto sin corromper el valor.
Las variables que no se pueden asignar a algunos registros deben almacenarse en la RAM y deben cargarse dentro y fuera para cada lectura y escritura, respectivamente, un procedimiento conocido como derrame. Acceder a los registros es mucho más rápido que acceder a la RAM. Además, acelera el tiempo de ejecución del programa compilado; por lo tanto, los compiladores eficientes apuntan a asignar tantas variables a los registros como sea posible.
Generalmente, la mayoría de los asignadores de registros asignan cada variable a la memoria principal o al registro de una unidad central de procesamiento (CPU). La velocidad es el beneficio clave al utilizar una caja registradora. Las computadoras cuentan con un rango finito de registros, lo que significa que no todas las variables disponibles se pueden asignar a los registros. El proceso de mover una variable de un registro a la memoria se conoce como derrame, mientras que el procedimiento inverso de mover una variable de la memoria a un registro se conoce como llenado. La asignación de registros inteligente es un paso crucial para cualquier compilador.
Hay dos tipos de asignación de registros:
- Asignación de registro local: este es un proceso de asignación de un bloque básico (o hiperbloque o superbloque) a la vez. La asignación de registros locales aumenta la velocidad.
- Asignación de registro global: si la utilización del registro es deficiente utilizando la asignación local, es importante hacer uso de la asignación de registro global. En la asignación de registro global simple, los valores más activos se asignan en cada bucle interno. La asignación de registro global completa utiliza un procedimiento para identificar rangos en vivo en un gráfico de flujo de control, asignar rangos en vivo y también rangos divididos según sea necesario.