TALx86: A Realistic Typed Assembly Language∗

The goal of typed assembly language (TAL) is to provide a low-level, statically typed target language that is better suited than Java bytecodes for supporting a wide variety of source languages and a number of important optimizations. In previous work, we formalized idealized versions of TAL and proved important safety properties about them. In this paper, we present our progress in defining and implementing a realistic typed assembly language called TALx86. The TALx86 instructions comprise a relatively complete fragment of the Intel IA32 (32-bit 80x86 flat model) assembly language and are thus executable on processors such as the Intel Pentium. The type system for the language incorporates a number of advanced features necessary for safely compiling large programs to good code. To motivate the design of the type system, we demonstrate how various high-level language features are compiled to TALx86. For this purpose, we present a type-safe C-like language called Popcorn.

[1]  Hans-Juergen Boehm,et al.  Garbage collection in an uncooperative environment , 1988, Softw. Pract. Exp..

[2]  Robert O'Callahn A Simple, Comprehensive Type System for Java Bytecode Subroutines , 1999, POPL.

[3]  Andrew C. Myers,et al.  Parameterized types for Java , 1997, POPL '97.

[4]  David Walker,et al.  Typed memory management in a calculus of capabilities , 1999, POPL '99.

[5]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[6]  D. H. Bartley,et al.  Revised4 report on the algorithmic language scheme , 1991, LIPO.

[7]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[8]  J. Gregory Morrisett,et al.  Type-safe linking and modular assembly language , 1999, POPL '99.

[9]  Robert O'Callahan,et al.  A simple, comprehensive type system for Java bytecode subroutines , 1999, POPL 1999.

[10]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[11]  Karl Crary A simple proof technique for certain parametricity results , 1999, ICFP '99.

[12]  Frank Pfenning,et al.  Eliminating array bound checking through dependent types , 1998, PLDI.

[13]  David Walker,et al.  From System F to Typed Assembly Language (Extended Version) , 1997 .

[14]  Susan Eisenbach,et al.  Formal underpinnings of Java , 1998, OOPSLA Addendum.

[15]  Frank Pfenning,et al.  Dependent types in practical programming , 1999, POPL '99.

[16]  Martín Abadi,et al.  A type system for Java bytecode subroutines , 1999, TOPL.

[17]  David Walker,et al.  Stack-based typed assembly language , 1998, Journal of Functional Programming.

[18]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[19]  Troy Downing,et al.  Java Virtual Machine , 1997 .

[20]  Martin Odersky,et al.  Pizza into Java: translating theory into practice , 1997, POPL '97.

[21]  AbadiMartin,et al.  A type system for Java bytecode subroutines , 1999 .

[22]  Trevor Jim,et al.  Certifying Compilation and Run-Time Code Generation , 1999, High. Order Symb. Comput..