Examples of Basic Blocks

1 / 6

# Examples of Basic Blocks - PowerPoint PPT Presentation

Examples of Basic Blocks. t7. +. t5. t4. *. +. t1. t3. *. *. b. b. t2. 2. *. a. a. a. b. a b. Following sequence of three-address statements forms a basic block: t1 : = a * a t2 := a * b t3 := 2 * t2 t4 := t1+ t3 t5 := b * b t6 := t4 + t5

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Examples of Basic Blocks' - dorit

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Examples of Basic Blocks

t7

+

t5

t4

*

+

t1

t3

*

*

b

b

t2

2

*

a

a

a

b

ab

Following sequence of three-address statements forms a basic block:

t1 : = a * a

t2 := a * b

t3 := 2 * t2

t4 := t1+ t3

t5 := b * b

t6 := t4 + t5

It computes: a*a + 2*a*b + b*b

Given 3-AS x := y+z:

-it defines X

-it uses (reference) y and z

Live name: A name is a basic block is said to be live at a given point if its value is used after that point in the program, perhaps in another basic block.

t7

t6

• i = m-1; j = n ; v = a[n];
• (1) i := m-l; j:=n; t1 := 4*n; v := a[t1];
• while(1) {
• do i = i + 1; while(a[i]
• (5) i := i+1; t2 := 4*i; t3 := a[t2];
• (8) if t3
• do j = j-1; while (a[j] > v);
• j:=j+1; t4:=4*j ; t5:=a[t4];
• (12) if t5 >v goto (9)
• (13) if( i >=j) goto (23)
• x = a[i]; a[i] = a[n]; a[n]=x
• (14) t6 := 4*i; x:=a[t6];
• (16) t7 := 4*i; x:=a[t6];
• (18) t9:= a[t8]; a[t7]:=t9;
• (20) t10:= 4*j; a[t10]:= x
• (22) goto(5)
• (23) ...

### Examples of 3 address code translation

C-code

void quicksort(m,n)

int m,n

{

int i,j;

int v,x;

if (n<=m) return;

/* fragment begins */

i:=m-1; j=n ; v=a[n];

while(1) {

do i=i+1; while(a[i]

do j=j-1; while(a[j]>v)

if (i>=j) break;

x=a[i];a[i]=a[n];a[n]=x;}

x=a[i];a[i]=a[n];a[n]=x;

/* fragment ends */

quicksort( m ,j); quicksort(l+1,n);

}

i:=m-1

j:=n

t1=4*n

v:= a[t1]

B1

### Example of Flow graphs

I=i+1

t2:=4*i

t3:=a[t2]

if( t3

B2

j:=j-1

t4:= 4 * j

t5:= a[t4]

if( t5 >v ) goto B3

B3

B4

if(i>=j) goto B6

t11:= 4* i

X= a[t11]

t12:= 4 * i

t13:= 4*n

t14 := a[t13]

a[t12]:= t14

t15 := 4 * n

a[t15]:= x

B6

t6:=4*i

x:= a[t6]

t7 := 4 * i

t8 := 4 * j

t9:= a[t8]

a[t7]:= t9

t10:= 4 * j

a[t10]:=x

goto B2

B5

### Partition into Basic Blocks algorithm

Input : A sequence of 3 address statements

Output: A sequence of basic blocks with each 3A Statement in exactly

one block.

Method:

(1) First determine a set of leaders, the 1st statement of basic blocks:

a) The first statement is a leader

b) Any statement that is a target of a conditional or

c) Any statement that immediately follows a goto, or conditional

(2) For each leader its basic block consists of:

b) All statements upto but not including the next leader or the

end of the program.

### Example of Partition into Basic Blocks

(1) prod : = 0

(2) i : = 1

(3) t1 : = 4 * i

(4) t2 : = a[t1]

(5) t3 : = 4 * i

(6) t4 : = b[t3]

(7) t5 : = t2 * t4

(8) t6 : = prod + t5

(9) prod : = t6

(10) t7 : = i+1

(11) i : = t7

(12) if( i <=20) goto (3)

Example of Partition into Basic Blocks

A block by rule 2

A block by rule 2

(1) prod : = 0

(2) i : = 1

(3) t1 : = 4 * i

(4) t2 : = a[t1]

(5) t3 : = 4 * i

(6) t4 : = b[t3]

(7) t5 : = t2 * t4

(8) t6 : = prod + t5

(9) prod : = t6

(10) t7 : = i+1

(11) i : = t7

(12) if( i <=20) goto (3)

B1

B2