Department of Computer Science and Technology

Technical reports

The triVM intermediate language reference manual

Neil Johnson

February 2002, 83 pages

This research was sponsored by a grant from ARM Limited.

DOI: 10.48456/tr-529


The triVM intermediate language has been developed as part of a research programme concentrating on code space optimization. The primary aim in developing triVM is to provide a language that removes the complexity of high-level languages, such as C or ML, while maintaining sufficient detail, at as simple a level as possible, to support reseach and experimentation into code size optimization. The basic structure of triVM is a notional Static Single Assignment-based three-address machine. A secondary aim is to develop an intermediate language that supports graph-based translation, using graph rewrite rules, in a textual, human-readable format. Experience has shown that text-format intermediate files are much easier to use for experimentation, while the penalty in translating this human-readable form to the internal data structures used by the software is negligible. Another aim is to provide a flexible language in which features and innovations can be evaluated; for example, this is one of the first intermediate languages directly based on the Static Single Assignment technique, and which explicitly exposes the condition codes as a result of arithmetic operations. While this paper is concerned solely with the description of triVM, we present a brief summary of other research-orientated intermediate languages.

Full text

PDF (0.4 MB)

BibTeX record

  author =	 {Johnson, Neil},
  title = 	 {{The triVM intermediate language reference manual}},
  year = 	 2002,
  month = 	 feb,
  url = 	 {},
  institution =  {University of Cambridge, Computer Laboratory},
  doi = 	 {10.48456/tr-529},
  number = 	 {UCAM-CL-TR-529}