0% found this document useful (0 votes)
10 views5 pages

Unit 4 Code Generation

Uploaded by

Akshaya Akshaya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views5 pages

Unit 4 Code Generation

Uploaded by

Akshaya Akshaya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Code

* code goneat addaeg


Bue
Code
stoteeds and
to sto
stattnut
(onald
tatmen La:
tf Can
ApD
na
Cost

(o1)
ADD (out= 2
Mimony lecato

Moy C
mevo
ADD RS to Rs and aodd

Reglaten and oddess dusenipdion


* The cod

dusciptoos
Co ntent
deunp toack
hames

track d docation
* keup name Can be
walue

be
addes those

Raisken daoaiptan n
kuup tatt srod
A
code-generation algorithm

The algorithm takes as input a sequence of three-address statements constituting a basic block. For each
three-address statement of the formx:=y opz, perform the following actions:

1. Invoke a function getreg to determine the location L where the result of the computation y op z
should be stored.

2. Consult the address descriptor for y to determine y', the current kocation of y. Prefer the register for
' if the value of y is currently both in memory and a register. If the value of y is not already in L,
generate the instruction MOV y',Lto place a copy of yin L.

3. Generate the instruction OP 2', L where z' is a current location of z. Prefer a register to a memory

location if z is in both. Update the address descriptor of x to indicate that x is in location L. If x is in L,


update its descriptor and remove x from all other descriptors.

4. If the current values of y or z have no next uses, are not live on exit from the block, and are in
registers, alter the register descriptor to indicate that, after execution of x :=y op z, those registers will
no longer contain y or z

Generating Code for Assignment Statements:

" The assignment d : (a-b) + (a-c) + (a-c) might be translated into the following three-address code
sequence:

Code sequence for the example is:


t:a-b
u:a-c
V:tt u
d:v+u
with d live at the end
Code sequence for the example is:
Statements Code Generated Register descriptor Address descriptor
Register empty
t:a-b MOV a, RO RO contains t t in RO
SUB b, RO

u:a-c MOV a, RI RO contains t Iin RO


SUB c, RI RI contains u u in RI

Vtt u ADD RI, RO RO contains v u in RI


RI contains u V in R0

d:y+u ADD RI, RO RO contains d d in RO


d in RO and memory
MOV RO, d

Generating Code for Indexed Assignments


The table shows the code sequences generated for the indexed assignmen a:= b[ i] and al i ]:=b
Statements Code Generated Cost
a :- b[i] MOV b(Ri), R 2
a[i] :b MOV b, a(Ri) 3

Generating Code for Pointer Assignments


The table shows the code sequences generated for the pointer assignments a : = "p and "p:= a

Statements Code Generated Cost


a:=p MOV Rp, a 2
"p:a MOV a, Rp 2

Generating Code for Conditional Statements


Statement Code
ifx <y goto z CMP ×,y
CJ< z /° jump to z if condition code is negative /
MOV y, RO
if x <0 goto z ADD z, RO
MOV RO.X

CJ<z

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy