Microsoft Store
 

Register Transfer Language


 

Register Transfer Language (RTL) is an intermediate representation used by the GCC compiler.

Related Topics:
Intermediate representation - GCC - Compiler

~ ~ ~ ~ ~ ~ ~ ~ ~ ~

RTL is used to represent the code being generated, in a form closer to assembly language than to the high level languages which GCC compiles.

~ ~ ~ ~ ~ ~ ~ ~ ~ ~

RTL is generated from the GCC Abstract Syntax Tree representation, transformed by various passes in the GCC 'middle-end', and then converted to assembly language. GCC currently uses the RTL form to do a part of its optimisation work.

~ ~ ~ ~ ~ ~ ~ ~ ~ ~

RTL is usually written in a form which looks like a Lisp S-expression:

Related Topics:
Lisp - S-expression

~ ~ ~ ~ ~ ~ ~ ~ ~ ~

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

~ ~ ~ ~ ~ ~ ~ ~ ~ ~

This 'side-effect expression' says 'add register 138 to register 139, and store the result in register 140'.

~ ~ ~ ~ ~ ~ ~ ~ ~ ~

The RTL generated for a program is different when GCC generates code for different processors. However, the meaning of the RTL is more-or-less independent of the target: it would usually be possible to read and understand a piece of RTL without knowing what processor it was generated for. Similarly, the meaning of the RTL doesn't usually depend on the original high-level language of the program.

~ ~ ~ ~ ~ ~ ~ ~ ~ ~