vcode: a retargetable, extensible, very fast dynamic code generation system

vcode: a portable, very fast dynamic code generation system

Appeared in SIGPLAN Conference on Programming Language Design and Implementation (PLDI '96), Philadelphia, PA, May 1996.

Abstract

We present vcode, a portable, extensible, very fast dynamic code generation system. An important feature of vcode is that it generates machine code ``in-place'' without the use of intermediate data structures. Eliminating the need to construct and consume an intermediate representation at runtime makes vcode both efficient and extensible. vcode dynamically generates code at an approximate cost of six to ten instructions per generated instruction, making it over an order of magnitude faster than the most efficient general-purpose code generation system in the literature.

Dynamic code generation is relatively well known within the compiler community. However, due in large part to the lack of a publicly available dynamic code generation system, it has remained a curiosity rather than a widely used technique. A practical contribution of this work is the free, unrestricted distribution of the vcode system, which currently runs on the MIPS, SPARC, and Alpha architectures.

Complete Paper (postscript, 11 pages)
Tutorial (postscript, 23 pages)


Source release

The latest vcode release (for MIPS, SPARC, and Alpha) is here.
An experimental version for Solaris is here.


`C: high-level dynamic code generation

vcode is used to implement the `C language. `C is an extension of ANSI C that provides language support for dynamic code generation. A preliminary release of the tcc compiler can be obtained from the tickc homepage.

Description of the `C Language (Appeared in POPL 1996, postscript, 14 pages)
Description of the `C compiler. (To appear in PLDI97, postscript, 12 pages)
Dated, but simple description of the `C compiler (Appeared in WCSSS 1996, postscript, 7 pages)


Other Publications

Dawson Engler
engler@lcs.mit.edu