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