TCOLAda and the “Middle End” of the PQCC Ada compiler

  • Authors:
  • Benjamin M. Brosgol

  • Affiliations:
  • -

  • Venue:
  • SIGPLAN '80 Proceedings of the ACM-SIGPLAN symposium on The ADA programming language
  • Year:
  • 1980

Quantified Score

Hi-index 0.00

Visualization

Abstract

A compiler is traditionally partitioned into a (mostly) machine independent Front End which performs lexical, syntactic, and semantic analysis, and a machine dependent Back End which performs optimization and code generation. In the Ada compiler being implemented at Carnegie-Mellon University in the PQCC project, it is useful to identify a set of phases occurring at the start of the Back End - i.e., “Middle End” - after semantic analysis but before optimization. These phases, known collectively as “CWVM” (an abbreviation for “Compiler Writer's Virtual Machine”) make basic representational choices and reflect these in an expanded program tree. This paper describes both TCOLAda - the intermediate language interface produced by the Front End - and the phases comprising CWVM. TCOLAda is a graph structured high level representation of the source program which includes both the symbol table and the program tree. The CWVM phases perform transformations of the TCOLAda graph which fall into three categories: language oriented (e.g., expansion of checking for constructs such as array indexing), virtual machine oriented (e.g., translation of up-level addressing into “display” vector accesses), and actual machine oriented (e.g., expansion of component selection into address arithmetic).