• 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:

  1. Compile the input program to a normalized form.
  2. 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

  1. Compile input program to normalized form (RTL “everything is a register”)
  2. 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

OCG

RTL

Data Descriptors

References
Table of Contents

  1. PL means Programming Language.