中国高校课件下载中心 》 教学资源 》 大学文库

清华大学:《编译原理》课程教学资源_(英文译文)Chapter 8 Code Generation

文档信息
资源类别:文库
文档格式:PPT
文档页数:42
文件大小:134.5KB
团购合买:点击进入团购
内容简介
Generate executable code for a target machine that is a faithful representation of the semantics of the source code Depends not only on the characteristics of the source language but also on detailed information about the target architecture, the structure of the runtime environment, and the operating system running on the target machine
刷新页面文档预览

COMPILER CONSTRUCTION Principles and practice Kenneth C. louden

COMPILER CONSTRUCTION Principles and Practice Kenneth C. Louden

8. Code Generation PART ONE

8. Code Generation PART ONE

Generate executable code for a target machine that is a faithful representation of the semantics of the source code Depends not only on the characteristics of the source language but also on detailed information about the target architecture. the structure of the runtime environment, and the operating system running on the target machine

• Generate executable code for a target machine that is a faithful representation of the semantics of the source code • Depends not only on the characteristics of the source language but also on detailed information about the target architecture, the structure of the runtime environment, and the operating system running on the target machine

Contents Part one 8.1 Intermediate Code and data Structure for code generation 8. 2 Basic Code generation Techniques Other Parts 8. 3 Code Generation of Data Structure Reference 8.4 Code Generation of Control Statements and logical Expression 8.5 Code Generation of Procedure and Function calls 8.6 Code Generation on Commercial Compilers: Two Case Studies 8.7 TM: A Simple Target machine 8. 8 A Code Generator for the TINy language 8.9 A Survey of Code Optimization Techniques 8.10 Simple Optimizations for TINY Code Generator

Contents Part One 8.1 Intermediate Code and Data Structure for code Generation 8.2 Basic Code Generation Techniques Other Parts 8.3 Code Generation of Data Structure Reference 8.4 Code Generation of Control Statements and Logical Expression 8.5 Code Generation of Procedure and Function calls 8.6 Code Generation on Commercial Compilers: Two Case Studies 8.7 TM: A Simple Target Machine 8.8 A Code Generator for the TINY Language 8.9 A Survey of Code Optimization Techniques 8.10 Simple Optimizations for TINY Code Generator

8.1 Intermediate Code and data Structures for Code generation

8.1 Intermediate Code and Data Structures for Code Generation

8.1.1 Three-Address code

8.1.1 Three-Address Code

a data structure that represents the source program during translation is called an intermediate representation or IR. for short Such an intermediate representation that resembles target code is called intermediate code Intermediate code is particularly useful when the goal of the compiler is to produce extremely efficient code; Intermediate code can also be useful in making a compiler more easily retarget-able Study two popular forms of intermediate code: Three Address code and p-code The most basic instruction of three-address code is designed to represent the evaluation of arithmetic expressions and has the following general form op z

• A data structure that represents the source program during translation is called an intermediate representation, or IR, for short • Such an intermediate representation that resembles target code is called intermediate code – Intermediate code is particularly useful when the goal of the compiler is to produce extremely efficient code; – Intermediate code can also be useful in making a compiler more easily retarget-able. • Study two popular forms of intermediate code: Three - Address code and P-code • The most basic instruction of three-address code is designed to represent the evaluation of arithmetic expressions and has the following general form: X=y op z

2*a+(b-3 )with syntax tree a The corresponding three-address code is T1=2*a T2=b-3 T3=t1+t2

2*a+(b-3) with syntax tree + * - 2 a b 3 The corresponding three-address code is T1 = 2 * a T2 = b – 3 T3 = t1 + t2

Figure 8. 1 Sample tiNY program i sample program in tiNY language -computes factorial readx; input an integer ifo>x then( dont compute ifx<=0) fact: =1 repeat fact: =fact*X X-X until xO write fact( output factorial ofx) ends

Figure 8.1 Sample TINY program: { sample program in TINY language -- computes factorial } read x ; { input an integer } if 0 > x then { don’t compute if x <= 0 } fact:=1; repeat fact:=fact*x; x:=x-1 until x=0; write fact { output factorial of x } ends

The Three-address codes for above tiny program readⅩ t1=x>0 if false tl goto Ll fact=1 label 2 t2=fact*x fact=t2 t3=x-1 X=t3 t4=x==0 if false t4 goto L2 write fact label li halt

• The Three-address codes for above TINY program read x t1=x>0 if_false t1 goto L1 fact=1 label L2 t2=fact*x fact=t2 t3=x-1 x=t3 t4= x= =0 if_false t4 goto L2 write fact label L1 halt

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档