- By
**dorit** - Follow User

- 68 Views
- Uploaded on

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

**An Image/Link below is provided (as is) to download presentation**

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

### Partition into Basic Blocks algorithm

### Example of Partition into 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

3 Address Code.### Examples of 3 address code translation

- 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) ...

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### Example of Flow graphs

j:=n

t1=4*n

v:= a[t1]

B1

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

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

unconditional goto is a leader

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

goto statement is a leader.

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

a) The leader

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

end of the program.

(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 leader by rule 1.a

A block by rule 2

A leader by rule 1.b

A block by rule 2

A leader by rule 1.c

(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

Download Presentation

Connecting to Server..