Finite-state code generation

Christopher W. Fraser, Todd A Proebsting

Research output: Contribution to journalArticle

Abstract

This paper describes GBURG, which generates tiny, fast code generators based on finite-state machine pattern matching. The code generators translate postfix intermediate code into machine instructions in one pass (except, of course, for backpatching addresses). A stack-based virtual machine - known as the Lean Virtual Machine (LVM) - tuned for fast code generation is also described. GBURG translates the two-page LVM-to-x86 specification into a code generator that fits entirely in an 8 KB I-cache and that emits x86 code at 3.6 MB/sec on a 266-MHz P6. Our just-in-time code generator translates and executes small benchmarks at speeds within a factor of two of executables derived from the conventional compile-time code generator on which it is based.

Original languageEnglish (US)
Pages (from-to)270-280
Number of pages11
JournalSIGPLAN Notices (ACM Special Interest Group on Programming Languages)
Volume34
Issue number5
StatePublished - May 1999
Externally publishedYes

Fingerprint

Pattern matching
Finite automata
Specifications
Code generation
Virtual machine

ASJC Scopus subject areas

  • Computer Graphics and Computer-Aided Design
  • Software

Cite this

Finite-state code generation. / Fraser, Christopher W.; Proebsting, Todd A.

In: SIGPLAN Notices (ACM Special Interest Group on Programming Languages), Vol. 34, No. 5, 05.1999, p. 270-280.

Research output: Contribution to journalArticle

@article{4c68be75d4fe4b3d8583d976ec518146,
title = "Finite-state code generation",
abstract = "This paper describes GBURG, which generates tiny, fast code generators based on finite-state machine pattern matching. The code generators translate postfix intermediate code into machine instructions in one pass (except, of course, for backpatching addresses). A stack-based virtual machine - known as the Lean Virtual Machine (LVM) - tuned for fast code generation is also described. GBURG translates the two-page LVM-to-x86 specification into a code generator that fits entirely in an 8 KB I-cache and that emits x86 code at 3.6 MB/sec on a 266-MHz P6. Our just-in-time code generator translates and executes small benchmarks at speeds within a factor of two of executables derived from the conventional compile-time code generator on which it is based.",
author = "Fraser, {Christopher W.} and Proebsting, {Todd A}",
year = "1999",
month = "5",
language = "English (US)",
volume = "34",
pages = "270--280",
journal = "ACM SIGPLAN Notices",
issn = "1523-2867",
publisher = "Association for Computing Machinery (ACM)",
number = "5",

}

TY - JOUR

T1 - Finite-state code generation

AU - Fraser, Christopher W.

AU - Proebsting, Todd A

PY - 1999/5

Y1 - 1999/5

N2 - This paper describes GBURG, which generates tiny, fast code generators based on finite-state machine pattern matching. The code generators translate postfix intermediate code into machine instructions in one pass (except, of course, for backpatching addresses). A stack-based virtual machine - known as the Lean Virtual Machine (LVM) - tuned for fast code generation is also described. GBURG translates the two-page LVM-to-x86 specification into a code generator that fits entirely in an 8 KB I-cache and that emits x86 code at 3.6 MB/sec on a 266-MHz P6. Our just-in-time code generator translates and executes small benchmarks at speeds within a factor of two of executables derived from the conventional compile-time code generator on which it is based.

AB - This paper describes GBURG, which generates tiny, fast code generators based on finite-state machine pattern matching. The code generators translate postfix intermediate code into machine instructions in one pass (except, of course, for backpatching addresses). A stack-based virtual machine - known as the Lean Virtual Machine (LVM) - tuned for fast code generation is also described. GBURG translates the two-page LVM-to-x86 specification into a code generator that fits entirely in an 8 KB I-cache and that emits x86 code at 3.6 MB/sec on a 266-MHz P6. Our just-in-time code generator translates and executes small benchmarks at speeds within a factor of two of executables derived from the conventional compile-time code generator on which it is based.

UR - http://www.scopus.com/inward/record.url?scp=17244373652&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=17244373652&partnerID=8YFLogxK

M3 - Article

VL - 34

SP - 270

EP - 280

JO - ACM SIGPLAN Notices

JF - ACM SIGPLAN Notices

SN - 1523-2867

IS - 5

ER -