Chapter 15 :: Building a Runnable Program Programming Language Pragmatics, Fourth Edition


Download 1 Mb.
bet4/10
Sana21.04.2023
Hajmi1 Mb.
#1367797
1   2   3   4   5   6   7   8   9   10
Bog'liq
Chapter15 Building a Runnable Program 4e

Intermediate Forms

  • Different compilers use different IFs
    • Many compilers use more than one IF internally, though in the common two-pass organization one of these is distinguished as “the” intermediate form
      • connection between the front end and the back end.
    • the syntax trees passed from semantic analysis to intermediate code generation constitute a high level IF
    • control flow graphs containing pseudo-assembly language (passed in and out of machine-independent code improvement) are a medium level IF
    • the assembly language of the target machine serves as a low level IF
  • Compilers that have back ends for different target architectures do as much work as possible on a high or medium level IF
    • the machine-independent parts of the code improver can be shared by different back ends

Intermediate Forms

Code Generation

  • The back end of Figure 15.1 is too complex to present in any detail in a single chapter
    • To limit the scope of our discussion, we will content ourselves in this chapter with producing correct but naive code
    • This choice will allow us to consider a significantly simpler back end.
    • Starting with Figure 15.1, we drop the machine-independent code improver and then merge intermediate and target code generation into a single phase
      • generates linear assembly language - no code improvements for control flow, therefore, there is no need to represent that flow explicitly in a control flow graph

Code Generation

  • We also adopt a much simpler register allocation algorithm
    • operates directly on the syntax tree prior to code generation - eliminates need for virtual registers and the subsequent mapping onto architectural registers
  • Finally, we drop instruction scheduling. The resulting compiler structure appears in Figure 15.5.
    • Its code generation phase closely resembles the intermediate code generation of Figure 15.1.
  • An Attribute Grammar for GCD Example is presented in Section 15.3.1

Download 1 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling