Register transfer language

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 23:22 16 abr 2020 por Semibot (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

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[1]​ y CompCert.[2]

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:

(set (reg:SI 140)
     (plus:SI (reg:SI 138)
              (reg:SI 139)))

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 procesaor para el que GCC está generando código. Sin embargo, el significado del RTL es más o menos independiente del objetivo: 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)

Véase también

Referencias

  1. «Certified Complexity (CerCo)» (en inglés). Consultado el 10 de julio de 2014. 
  2. «Módulo RTL en CompCert» (en inglés). Archivado desde el original el 5 de octubre de 2013. Consultado el 10 de julio de 2014. 

Enlaces externos