Abstract
The report describes the process of designing, building and evaluating
a Simula compiler based directly on the multi-platform optimization
and code generation framework of the GNU Compiler Collection (GCC).
Utilization of this framework, known as the GCC back-end, enables this
Simula implementation to generate good-quality assembler code for the
variety of machine platforms that are supported by GCC.
The interface provided by the GCC back-end is more flexible than the C
language and therefore provides certain advantages when expressing the
semantics of Simula to the low-level optimization machinery of the GCC
back-end.
Accommodation of Simula's coroutine feature poses a particular
challenges on the GCC back-end with respect to the heap-based
activation records that become necessary. Extensive preallocation of
activation records reduces the number of heap allocations and improves
run-time performance at the expense of memory parsimony.