1 / 11

# MIPS Instruction Set - PowerPoint PPT Presentation

MIPS Instruction Set. Conditional Expressions and Branching. Outline. Motivation for conditional expressions and loops How to add a sequence of numbers Conditional expressions (branching) Jumping Switching. Last time ...adding 3 numbers. What a mess this is...

Related searches for MIPS Instruction Set

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

## PowerPoint Slideshow about 'MIPS Instruction Set' - jerrell

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

### MIPS Instruction Set

Conditional Expressions and Branching

• Motivation for conditional expressions and loops

• How to add a sequence of numbers

• Conditional expressions (branching)

• Jumping

• Switching

• What a mess this is...

• lw \$10,A(\$0) # \$10 = a0 (\$0 always contains 0)

• li \$4, 4 # \$4 = 4

• lw \$3,A(\$4) # \$3 = a1

• add \$10,\$10,\$3 # \$10 = a0 + a1

• li \$4, 8 # \$4 = 8

• lw \$3,A(\$4) # \$3 = a2

• add \$10,\$10,\$3 # \$10 = a0 + a1+ a2

• li \$4, 12 # \$4 = 12

• sw \$10,A(\$4) # a3 gets \$10

• Suppose 100 numbers to be added?

• Doesn’t generalise!

• x[0], x[1], ..., x[n-1] sequence of n numbers.(n=100, say).

• Consider (abstract representation)

sum = 0 # initialise sum

n = 100 # initialise boundary condition

i = 0 # initialise counter

LOOP: # label

sum = sum + x[i] #overwrite sum

i = i+1 #increment counter

if (i != n) then go to LOOP

move \$5,\$0 # puts 0 into \$5 (sum)

addi \$4,\$0,100 # puts 100 into \$4 (n)

move \$11,\$0 # puts 0 into \$11 (i)

li \$12,4 # puts 4 into \$12

LOOP: mult \$14,\$11,\$12 # \$14 = i*4 (why?!)

lw \$6,Xstart(\$14) # retrieves x[i]

add \$5,\$5,\$6 # sum = sum + x[i]

addi \$11,\$11,1 # i = i+1

bne \$11,\$4, LOOP # if i < n go to LOOP

sw \$5,Sum(\$0) #result put in memory

• bne \$a,\$b,LABEL

• branch if not equal

• beq \$a,\$b,LABEL

• branch if equal

• if \$a == \$b jumpt to LABEL

• slt \$a,\$b,\$c

• set if less than

• if (\$b < \$c) then \$a = 1 else \$a = 0

• Consider the following abstract code

if (a < b) then c = 100

else c = 500

• In MIPS (suppose a,b,c are \$5,\$6,\$7)

slt \$10,\$5,\$6 # \$10 = 1 if \$5<\$6

beq \$10,\$0,ELSE # if \$10==0 goto else

ELSE : addi \$7,\$0,500 # \$7 = 500

CONTINUE: whatever here...

• Abstract code

if k=0 then a=20

else if k=1 then a=10

else if k=2 then a=11;

• C/C++ representation (uses ‘switch’)

switch(k){

0 : a = 20; break;

1 : a = 10; break;

2 : a = 11;

}

• jumps to instruction referenced in \$a

• suppose Label is memory location containing addresses L0, L1, L2. (\$4=k*4)

lw \$10,Label(\$4) # \$10 = Label[k]

jr \$10 # jump \$10

L0: addi \$20,\$0,20 # \$20 gets 20

j BREAK

L1: addi \$20,\$0,10 # \$20 gets 10

j BREAK

L2: addi \$20,\$0,11 # \$20 gets 11

BREAK: continue whatever here

• bne \$a,\$b,LABEL #branch if not equal

• beq \$a,\$b,LABEL #branch if equal

• slt \$a,\$b,\$c # select if less than