Compiler Technology Takeaways 2
- normalization
gcc
The Gnu C compiler uses RTL
RTL was invented as a peepholing technology by Fraser-Davidson.
OCG
Orthogonal Code Generator (Cordy).
OCG is a declarative decision language for portability.
OCG splits portable code generation into two sub-tasks:
- Compile the input program to a normalized form.
- Convert the normalized form to code for specific CPU.
Denotational Semantics
Denotational Semantics is a functional description of PL1.
Includes grammar + semantics + code emission.
Denotational Semantics was, originally, an all-in-one concept resulting in large compilers that were not practical.
Peter Lee “Realistic Compiler Generation” broke the concept down into sub-tasks and produced more practical results.
Normalization
- Triples
- Data Descriptors
Opcodes
Opcodes are triples.
MOV R0,R1
RTL
Register Transfer Logic created by Fraser/Davidson as peephole technology for portability.
Splits code selectiion into two sub-tasks
- Compile input program to normalized form (RTL “everything is a register”)
- Convert normalized form to code for specific CPU.
Data Descriptors
Normalized form for description of data locations.
Enables splitting of portable compilers into smaller sub-tasks.
See Also
-
PL means Programming Language. ↩