Abstract
Typed assembly languages provide a way to generate machine-checkable safety proofs for machine-language programs. But the soundness proofs of most existing typed assembly languages are hand-written and cannot be machine-checked, which is worrisome for such large calculi. We have designed and implemented a low-level typed assembly language (LTAL) with a semantic model and established its soundness from the model. Compared to existing typed assembly languages, LTAL is more scalable and more secure; it has no macro instructions that hinder low-level optimizations such as instruction scheduling; its type constructors are expressive enough to capture dataflow information, support the compiler's choice of data representations and permit typed position-independent code; and its type-checking algorithm is completely syntax-directed. We have built a prototype system, based on Standard ML of New Jersey, that compiles most of core ML to Sparc code. We explain how we were able to make the untyped back end in SML/NJ preserve types during instruction selection and register allocation, without restricting low-level optimizations and without knowledge of any type system pervading the instruction selector and register allocator.
Original language | English (US) |
---|---|
Pages (from-to) | 208-219 |
Number of pages | 12 |
Journal | SIGPLAN Notices (ACM Special Interest Group on Programming Languages) |
Volume | 38 |
Issue number | 5 |
DOIs | |
State | Published - May 2003 |
Event | Proceedings of the ACM Sigplan 2003 Conference on Programming Language Design and Implementation - San Diego, CA, United States Duration: Jun 9 2003 → Jun 11 2003 |
All Science Journal Classification (ASJC) codes
- Software
- Computer Graphics and Computer-Aided Design
Keywords
- Proof-carrying code
- Typed assembly language