Compiling with Register Transfer Lists (RTLs)

Site Map

Introduction

ASDL

CSDL

  • CCL
  • \-RTL
  • SLED
  • vpo

    RTLs

    Talks & Papers

    Software

    People

    Mailing lists

    Job Openings


    Nat'l Infrastructure

  • What & Why?
  • Sponsors

  • Machine descriptions based on register-transfer lists (RTLs) have proven very useful in building retargetable compilers, but not in building other retargetable tools. Simulators, assemblers, linkers, debuggers, and profilers are great tools, but they are built by hand if at all, because previous machine descriptions have lacked the detail and precision needed to generate them. The Zephyr compilers and tools are based on a new formalization of RTLs. Unlike previous notations, Zephyr's RTLs have a detailed, unambiguous, and machine-independent semantics. These semantic properties make Zephyr's RTLs ideal for realizing retargetable tools.

    We prescribe a form of RTLs that is designed to be used by tools, not by people. To simplify analysis, we make the form simple, and we insist that as much information as possible be explicit in the RTL itself. We don't care if individual RTLs grow large, as long as they are composed from simple parts using only a few cases. This choice distinguishes CSDL RTLs from earlier work, which has used smaller RTLs that make implicit assumptions about details like operand sizes and byte order.

    In Zephyr,

    A register transfer list is a list of guarded effects. Each effect represents the transfer of a value into a storage location, i.e., a store operation. The transfer takes place only if the guard (an expression) evaluates to true. Effects in a list take place simultaneously, as in Dijkstra's multiple-assignment statement---an RTL represents a single change of state, and we can specify swap instructions without introducing phony temporaries. Values are computed by expressions without side effects. Eliminating side effects simplifies analysis and transformation. Expressions may be integer constants, fetches from locations, or applications of RTL operators to lists of expressions.

    Our paper Machine Descriptions to Build Tools for Embedded Systems describes Zephyr RTLs in more detail.


    Back to Zephyr home page