Machine Descriptions to Build Tools for Embedded Systems

Because of poor tools, developing embedded systems can be unnecessarily hard. Machine descriptions based on register-transfer lists (RTLs) have proven useful in building retargetable compilers, but not in building other retargetable tools. Simulators, assemblers, linkers, debuggers, and profilers are built by hand if at all—previous machine descriptions have lacked the detail and precision needed to generate them. This paper presents detailed and precise machine-description techniques that are based on a new formalization of RTLs. Unlike previous notations, these RTLs have a detailed, unambiguous, and machine-independent semantics, which makes them ideal for supporting automatic generation of retargetable tools. The paper also gives examples of λ-RTL, a notation that makes it possible for human beings to read and write RTLs without becoming overwhelmed by machine-dependent detail.

[1]  Edwin A. Harcourt,et al.  A functional specification language for instruction set architectures , 1994, Proceedings of 1994 IEEE International Conference on Computer Languages (ICCL'94).

[2]  David B. Whalley,et al.  Ease: an environment for architecture study and experimentation , 1990, SIGMETRICS '90.

[3]  Christopher W. Fraser,et al.  BURG: fast optimal instruction selection and tree parsing , 1992, SIGP.

[4]  Andrew W. Appel,et al.  The Zephyr Abstract Syntax Description Language , 1997, DSL.

[5]  Alan Eustace,et al.  ATOM - A System for Building Customized Program Analysis Tools , 1994, PLDI.

[6]  Christopher W. Fraser,et al.  The Design and Application of a Retargetable Peephole Optimizer , 1980, TOPL.

[7]  Donald E. Thomas,et al.  The Verilog® Hardware Description Language , 1990 .

[8]  Christopher W. Fraser,et al.  Detecting pipeline structural hazards quickly , 1994, POPL '94.

[9]  Norman Ramsey A Simple Solver for Linear Equations Containing Nonlinear Operators , 1996 .

[10]  Norman Ramsey,et al.  Specifying representations of machine instructions , 1997, TOPL.

[11]  Manuel E. Benitez,et al.  A portable global optimizer and linker , 1988, PLDI '88.

[12]  Roger Lipsett,et al.  VHDL: hardware description and design , 1989 .

[13]  Markus Freericks,et al.  Describing instruction set processors using nML , 1995, Proceedings the European Design and Test Conference. ED&TC 1995.

[14]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[15]  Greg Morrisett,et al.  Compiling with Types , 1995 .

[16]  James R. Larus,et al.  EEL: machine-independent executable editing , 1995, PLDI '95.

[17]  David R. Hanson,et al.  A retargetable debugger , 1992, PLDI '92.

[18]  Norman Ramsey,et al.  A Simple Solver for Linear Equations Containing Nonlinear Operators , 1996, Softw. Pract. Exp..

[19]  Jack W. Davidson,et al.  A formal model and specification language for procedure calling conventions , 1995, POPL '95.

[20]  Maria Fernandez A retargetable, optimizing linker , 1996 .

[21]  Robin Milner,et al.  Definition of standard ML , 1990 .

[22]  Richard M. Stallman Using and porting gnu cc (version 2 , 1992 .

[23]  Helmut Emmelmann,et al.  BEG: a generator for efficient back ends , 1989, PLDI '89.