Registro de enlace


Un registro de enlace es un registro de propósito especial que contiene la dirección a la que volver cuando se completa una llamada de función . Esto es más eficiente que el esquema más tradicional de almacenar direcciones de retorno en una pila de llamadas , a veces llamada pila de máquina. El registro de enlace no requiere las escrituras y lecturas de la memoria que contiene la pila, lo que puede ahorrar un porcentaje considerable de tiempo de ejecución con llamadas repetidas de pequeñas subrutinas.

Un registro de enlace se utiliza en muchas arquitecturas de conjuntos de instrucciones , como PowerPC , ARM y PA-RISC . Otras arquitecturas (como SPARC ) tienen un registro con el mismo propósito pero con otro nombre (en este caso, "registro de salida 7" u o7 ). [1]

El uso de un registro de enlace (o un registro de propósito general, como se hace en algunas otras arquitecturas de conjuntos de instrucciones) permite llamadas más rápidas a subrutinas hoja . Cuando la subrutina no es hoja, pasar la dirección de retorno en un registro aún puede resultar en la generación de un código más eficiente para los procesadores , por ejemplo, para una función cuyo único propósito es llamar a otra función con argumentos reorganizados de alguna manera. Otras subrutinas pueden beneficiarse del uso del registro de enlace porque se puede guardar en un lote con otros registros utilizados por el destinatario, por ejemplo, una subrutina ARM empuja los registros 4-7 junto con el registro de enlace, LR, mediante una única instrucción que STMDB SP!, {R4-R7, LR}canaliza todas las escrituras de memoria. requerido.