1 1 14 RTL Representation 1 ********************* 1 1 The last part of the compiler work is done on a low-level intermediate 1 representation called Register Transfer Language. In this language, the 1 instructions to be output are described, pretty much one by one, in an 1 algebraic form that describes what the instruction does. 1 1 RTL is inspired by Lisp lists. It has both an internal form, made up 1 of structures that point at other structures, and a textual form that is 1 used in the machine description and in printed debugging dumps. The 1 textual form uses nested parentheses to indicate the pointers in the 1 internal form. 1
1 · RTL Objects Expressions vs vectors vs strings vs integers. · RTL Classes Categories of RTL expression objects, and their structure. · Accessors Macros to access expression operands or vector elts. · Special Accessors Macros to access specific annotations on RTL. · Flags Other flags in an RTL expression. · Machine Modes Describing the size and format of a datum. · Constants Expressions with constant values. · Regs and Memory Expressions representing register contents or memory. · Arithmetic Expressions representing arithmetic on other expressions. · Comparisons Expressions representing comparison of expressions. · Bit-Fields Expressions representing bit-fields in memory or reg. · Vector Operations Expressions involving vector datatypes. · Conversions Extending, truncating, floating or fixing. · RTL Declarations Declaring volatility, constancy, etc. · Side Effects Expressions for storing in registers, etc. · Incdec Embedded side-effects for autoincrement addressing. · Assembler Representing 'asm' with operands. · Debug Information Expressions representing debugging information. · Insns Expression types for entire insns. · Calls RTL representation of function call insns. · Sharing Some expressions are unique; others *must* be copied. · Reading RTL Reading textual RTL from a file. 1