En informática , el lenguaje de transferencia de registros ( RTL ) es un tipo de representación intermedia (IR) muy similar al lenguaje ensamblador , como el que se usa en un compilador . Se utiliza para describir el flujo de datos a nivel de transferencia de registros de una arquitectura . [ 1 ] Los artículos académicos y los libros de texto suelen usar una forma de RTL como un lenguaje ensamblador independiente de la arquitectura. RTL se usa como nombre de una representación intermedia específica en varios compiladores, incluyendo la Colección de Compiladores GNU (GCC), Zephyr y los proyectos de compiladores europeos CerCo y CompCert .
Historia
La idea detrás de RTL se describió por primera vez en El diseño y la aplicación de un optimizador de mirillas reorientables . [ 2 ]
GCC
En GCC, el RTL se genera a partir de la representación GIMPLE , se transforma mediante varias pasadas en el middle-end de GCC y luego se convierte a lenguaje ensamblador. [ 3 ]
El RTL de GCC generalmente se escribe en una forma que se parece a una expresión S de Lisp :
( conjunto ( reg: SI 140 ) ( más:SI ( reg:SI 138 ) ( reg: SI 139 )))Esta expresión de efecto secundario indica que se debe sumar el contenido del registro 138 con el del registro 139 y almacenar el resultado en el registro 140. El SI especifica el modo de acceso para cada registro. En el ejemplo, se utiliza el modo "SImode", es decir, se accede al registro como un único entero de 32 bits.
La secuencia de RTL generada depende en cierta medida de las características del procesador para el que GCC genera el código. Sin embargo, el significado de la RTL es prácticamente independiente del procesador de destino: normalmente sería posible leer y comprender un fragmento de RTL sin saber para qué procesador se generó. Del mismo modo, el significado de la RTL no suele depender del lenguaje de alto nivel original del programa.
Un lenguaje de transferencia de registros es un sistema para expresar simbólicamente las secuencias de microoperaciones entre los registros de un módulo digital. Es una herramienta práctica para describir la organización interna de las computadoras digitales de manera concisa y precisa. También puede utilizarse para facilitar el proceso de diseño de sistemas digitales. [ 4 ]
Referencias
- ↑ Mahani, Negin (16 de enero de 2013). "Haciendo realidad el modelado a nivel de transferencia de registros y a nivel de transacción en Ada" . ACM SIGAda Ada Letters . 32 (2): 9–16 . doi : 10.1145/2429574.2429576 . Recuperado el 8 de septiembre de 2024 .
- ↑ "Davidson y Fraser; El diseño y la aplicación de un optimizador de mirillas reorientable ; ToPLaS v2(2) 191-202 (abril de 1980)" (PDF) . Archivado del original (PDF) el 23 de febrero de 2024. Consultado el 3 de enero de 2009 .
- ↑ "RTL (GNU Compiler Collection (GCC) Internals)" . gcc.gnu.org . Consultado el 14 de enero de 2026 .
- ↑ Mano, Morris M. (1992). Arquitectura de sistemas informáticos (3.ª ed.). Prentice Hall. pág. 94. ISBN 0131755633.
Enlaces externos
- Lenguaje de transferencia de registros del CCG
- Estructuras del compilador