Methods for saving and restoring register values across function calls
Software—Practice & Experience
Compiling with continuations
A formal model and specification language for procedure calling conventions
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Target-sensitive construction of diagnostic programs for procedure calling sequence generators
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
A single intermediate language that supports multiple implementations of exceptions
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
The ICON Programming Language
A Retargetable C Compiler: Design and Implementation
A Retargetable C Compiler: Design and Implementation
C--: A Portable Assembly Language that Supports Garbage Collection
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Embedding an interpreted language using higher-order functions and types
Proceedings of the 2003 workshop on Interpreters, virtual machines and emulators
Csdl: reusable computing system descriptions for retargetable systems software
Csdl: reusable computing system descriptions for retargetable systems software
Automatic Detection and Diagnosis of Faults in Generated Code for Procedure Calls
IEEE Transactions on Software Engineering
Random testing of C calling conventions
Proceedings of the sixth international symposium on Automated analysis-driven debugging
Calling variadic functions from a strongly-typed language
Proceedings of the 2008 ACM SIGPLAN workshop on ML
Building language towers with ziggurat
Journal of Functional Programming
Automatically generating instruction selectors using declarative machine descriptions
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Embedding an interpreted language using higher-order functions and types
Journal of Functional Programming
Coq: the world's best macro assembler?
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.00 |
We present staged allocation, a technique for specifying calling conventions by composing tiny allocators called stages. A specification written using staged allocation has a precise, formal semantics, and it can be executed directly inside a compiler. Specifications of nine standard C~calling conventions range in size from 15 to 30 lines each. An implementation of staged allocation takes about 250 lines of ML or 650~lines of C++. Each specification can be used not only to help a compiler implement the calling convention but also to generate a test suite.