mips instruction set
Download
Skip this Video
Download Presentation
MIPS Instruction Set

Loading in 2 Seconds...

play fullscreen
1 / 11

MIPS Instruction Set - PowerPoint PPT Presentation


  • 164 Views
  • Uploaded on

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

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

PowerPoint Slideshow about 'MIPS Instruction Set' - jerrell


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
mips instruction set

MIPS Instruction Set

Conditional Expressions and Branching

outline
Outline
  • Motivation for conditional expressions and loops
  • How to add a sequence of numbers
  • Conditional expressions (branching)
  • Jumping
  • Switching
last time adding 3 numbers
Last time ...adding 3 numbers...
  • 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!
adding a sequence of n numbers
Adding a sequence of n numbers
  • 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

adding the sequence in mips
Adding the Sequence in MIPS

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

conditional expressions
Conditional Expressions
  • bne $a,$b,LABEL
    • branch if not equal
      • if $a != $b then jump to LABEL
  • 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
example introduces jump
Example (introduces jump)
  • 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

addi $7,$0,100 # $7 =100

j CONTINUE # jump to continue

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

CONTINUE: whatever here...

choosing from several alternatives
Choosing from several alternatives
  • 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;

}

using jump register jr a
Using jump register (jr $a)
  • 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

summary
Summary
  • bne $a,$b,LABEL #branch if not equal
  • beq $a,$b,LABEL #branch if equal
  • slt $a,$b,$c # select if less than
  • j LABEL #jump to the instruction referenced by LABEL
  • jr $a #jump to instruction referenced in register $a
still potential for a mess
Still potential for a mess!...
  • Adding 100 numbers x[] is fine.
  • Suppose later we want to add 1011 numbers using sequence y[]?
    • Do we have to repeat the same set of instructions all over again, with small modifications?
    • No way!
  • Use procedures!!!
ad