Abstract
The final goal of a compiler is to get programs written in a high-level language to run on a computer. This means that, eventually, the program will have to be expressed as machine code which can run on the computer. This does not mean that we need to translate directly from the high-level abstract syntax to machine code. Many compilers use a medium-level language as a stepping-stone between the high-level language and the very low-level machine code. Such stepping-stone languages are called intermediate code. We will generate intermediate code using translation functions for each syntactic category, similar to the functions we used for interpretation and type checking. We generate code for a syntactic construct independently of the constructs around it, except that the parameters of a translation function may hold information about the context (such as symbol tables) and the result of a translation function may (in addition to the generated code) hold information about how the generated code interfaces with its context (such as which variables it uses).
“The art of free society consists first in the maintenance of the symbolic code; and secondly in fearlessness of revision, to secure that the code serves those purposes which satisfy an enlightened reason.”
Alfred North Whitehead (1869–1947)
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Note that the coordinate system, following computer-science tradition, is rotated 90° clockwise compared to mathematical tradition.
References
Aït-Kaci, H.: Warren’s Abstract Machine—A Tutorial Reconstruction. MIT Press, Cambridge (1991)
Appel, A.W.: Compiling with Continuations. Cambridge University Press, Cambridge (1992)
Jones, S.L.P., Lester, D.: Implementing Functional Languages—A Tutorial. Prentice Hall, Reading (1992)
Lattner, C.: Llvm language reference manual (2011). http://llvm.org/docs/LangRef.html
Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn. Addison-Wesley, Reading (1999)
Muchnick, S.S.: Advanced Compiler Design and Implementation. Morgan Kaufmann, San Mateo (1997)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2011 Springer-Verlag London Limited
About this chapter
Cite this chapter
Mogensen, T.Æ. (2011). Intermediate-Code Generation. In: Introduction to Compiler Design. Undergraduate Topics in Computer Science. Springer, London. https://doi.org/10.1007/978-0-85729-829-4_6
Download citation
DOI: https://doi.org/10.1007/978-0-85729-829-4_6
Publisher Name: Springer, London
Print ISBN: 978-0-85729-828-7
Online ISBN: 978-0-85729-829-4
eBook Packages: Computer ScienceComputer Science (R0)