Register transfer language
# Register transfer language

En ciencias de la computación, el register transfer language (RTL, lenguaje de transferencia de registros) es un tipo de representación intermedia (RI) que es muy cercano al lenguaje ensamblador, ya que es usado en un compilador. Es básicamente una operación usada para transferir información de un lugar a otro. Trabajos académicos y libros de texto suelen tomar el RTL como un tipo de lenguaje ensamblador neutral respecto a la arquitectura. RTL también es el nombre de una RI específica usada en el GNU Compiler Collection (GCC) y en otros compiladores, como Zephyr o los proyectos europeos de compilador CerCo y CompCert.

## En GCC

En Gcc, el RTL es generado por la representación GIMPLE, transformado tras varios pases en "middle-end" y luego convertido en lenguaje ensamblador.

El RTL de GCC está usualmente escrito de forma que parece una Expresión S de Lisp:

Esta "expresión side-effect" dice "añade el contenido del registro 138 al contenido del registro 139 y almacena el resultado en el registro 140". El SI especifica el modo de acceso para cada registro. En el ejemplo es "SImode", esto es "accede el registro como un entero de 32 bits".

La secuencia de RTL generada tiene cierta dependiencia de las características del procesador para el que GCC está generando código. Sin embargo, el significado del RTL es más o menos independiente de la arquitectura: usualmente sería posible leer y entender un trozo de RTL sin saber para qué procesador fue generado. Similarmente, el significado del RTL no suele depender del lenguaje de alto nivel del programa.

Un lenguaje de transferencia de registros es un sistema para expresar de una forma simbólica las secuencias de microoperaciones entre los registros de un módulo digital. Es una herramienta conveniente para describir la organización interna de computadoras digitales de una manera concisa y precisa. También puede ser usado para facilitar el proceso de diseño de sistemas digitales.

## Historia

La idea detrás de RTL fue descrita por primera vez en: Davidson y Fraser; Diseño y aplicación del optimizador de una mirilla redestinable; ToPLaS v2(2) 191-202 (abril de 1980) (en inglés)

