Semantics of machine instructions: Lambda-RTL

Site Map

Introduction

ASDL

CSDL

  • CCL
  • \-RTL
  • SLED
  • vpo

    RTLs

    Talks & Papers

    Software

    People

    Mailing lists

    Job Openings


    Nat'l Infrastructure

  • What & Why?
  • Sponsors

  • Lambda-RTL is a CSDL language for specifying instructions' semantics. Lambda-RTL uses register transfer lists (RTLs) to describe the effects of each instruction on the state of the machine. A register transfer list is a collection of assignments to locations, which represent registers, memory, and all other mutable state. We prescribe a form of RTLs that makes it explicit how to compute the values assigned and on what state the computation depends. The form also makes byte order explicit and provides for instructions whose effects may be undefined.

    Because our form of RTLs contains so much information, it is convenient for use by tools, but it would be tedious to write RTLs by hand. lambda-RTL, which is based on the lambda-calculus and on register transfer lists, makes it easier for people to write RTLs and to associate them with machine instructions. It enables us to omit substantial information from hand-written specifications; the lambda-RTL translator infers the missing information and puts the resulting RTLs into canonical form. lambda-RTL also provides a ``grouping'' construct designed to help specify large groups of similar instructions.

    The lambda-RTL translator is immature, but it is possible to download it to do experiments.

    An interim report on Lambda-RTL

    For those who like details, we present raw source code for the SPARC and Pentium descriptions, as well as the diagnostic output of the lambda-RTL translator. The diagnostic output is strictly for debugging; it will be of interest only to die-hards, if anyone. We also include the human-readable ``Processor Supplement'' for the SPARC.

    SPARC description
    lambda-RTL Source Simple versionFull version
    Translator diagnostic Simple versionFull version
    Proc. Supplement Simple version, hyper-dvi to view online
    Proc. Supplement Simple version, to print

    Pentium description
    lambda-RTL Source Simple versionFull version
    Translator diagnostic Simple versionFull version

    We have written a report describing CSDL and lambda-RTL. The report includes example descriptions of SPARC and Pentium instructions, and they are presented as literate programs.

    The report is available in

    Automatically converted from the LaTeX source, we have HTML versions of chapters of the report: In these versions, some of the figures and syntax examples may look odd, and there are other formatting errors, but they may be useful for browsing. To get the full story, you're better off with one of the postscript versions.

    Please write!

    We're providing this report to make it easier for potential users and other interested parties to comment on our work. Please send comments to zephyr-discussion@virginia.edu (for public discussion) or to zephyr-investigators@virginia.edu (private mail to the investigators). (You can also subscribe to one or more Zephyr mailing lists.)