FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
A simple proof of a theorem of Statman
Theoretical Computer Science
A framework for defining logics
Journal of the ACM (JACM)
Improvements to graph coloring register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
A practical soft type system for scheme
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
The design and implementation of a certifying compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Implementing typed intermediate languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Type-safe linking and modular assembly language
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
A simple proof technique for certain parametricity results
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Type dispatch for named hierarchical types
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
A semantic model of types and machine instructions for proof-carrying code
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Split-stream dictionary program compression
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
A certifying compiler for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Oracle-based checking of untrusted software
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Stack-Based Typed Assembly Language
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
JAZZ: an efficient compressed format for Java archive files
CASCON '98 Proceedings of the 1998 conference of the Centre for Advanced Studies on Collaborative research
Efficient Representation and Validation of Proofs
LICS '98 Proceedings of the 13th Annual IEEE Symposium on Logic in Computer Science
Efficient Code Certification
A Notation for Lambda Terms II: Refinements and Applications
A Notation for Lambda Terms II: Refinements and Applications
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Safe and Flexible Dynamic Linking of Native Code
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A verifiable SSA program representation for aggressive compiler optimization
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-preserving compilation for large-scale optimizing object-oriented compilers
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
An Abstract Model of Certificate Translation
ACM Transactions on Programming Languages and Systems (TOPLAS)
FASER Formal and Automatic Security Enforcement by Rewriting by BPA algebra with test
International Journal of Grid and Utility Computing
Hi-index | 0.00 |
A type-based certifying compiler maps source code to machine code and target-level type annotations. The target-level annotations make it possible to prove easily that the machine code is type-safe, independent of the source code or compiler. To be useful across a range of source languages and compilers, the target-language type system should provide powerful type constructors for encoding higher-level invariants. Unfortunately, it is difficult to engineer such type systems so that annotation sizes are small and verification times are fast.In this paper, we describe our experience writing a certifying compiler that targets Typed Assembly Language (TALx86) and discuss some general techniques we have used to keep annotation sizes small and verification times fast. We quantify the effiectiveness of these techniques by measuring their effiects on a sizeable application -- the certifying compiler itself. Using these techniques, which include common-subexpression elimination of types, higher-order type abbreviations, and selective reverification, can dramatically change certificate size and verification time.