Conditional Instructions

Report
COMPUTER ARCHITECTURE &
OPERATIONS I
Instructor: Yaohang Li
Review

Last Class




Binary Integers

Unsigned

Signed

Signed Extension
Representation of MIPS Instructions

R-format

I-format
This Class

Conditional Instructions

Assignment 4
Next Class

Conditional Instructions (Cont.)
Instructions for Making Decisions

High-level programming language
C/C++:
if … else … (conditional)
goto (unconditional)
for, while, until (loops)

Assembly Languages
MIPS:
beq (branch if equal)
bne (branch if not equal)
j (unconditional jump)
Conditional Operations

Branch to a labeled instruction if a
condition is true


beq rs, rt, L1


if (rs == rt) branch to instruction labeled L1;
bne rs, rt, L1


Otherwise, continue sequentially
if (rs != rt) branch to instruction labeled L1;
j L1

unconditional jump to instruction labeled L1
Compiling If Statements

C code:
if (i==j) f = g+h;
else f = g-h;
Compiling If Statements

C code:
if (i==j) f = g+h;
else f = g-h;


f ($s0), g ($s1), h($s2), i($s3), j($s4)
Compiled MIPS code:
bne
add
j
Else: sub
Exit: …
$s3, $s4, Else
$s0, $s1, $s2
Exit
$s0, $s1, $s2
Assembler calculates addresses
Compiling Loop Statements

C code:
while (save[i] == k) i = i+1;


i in $s3, k in $s5, address of save in $s6
Flowchart?
Compiling Loop Statements

C code:
while (save[i] == k) i = i+1;


i in $s3, k in $s5, address of save in $s6
Compiled MIPS code:
Loop: sll
add
lw
bne
addi
j
Exit: …
$t1,
$t1,
$t0,
$t0,
$s3,
Loop
$s3, 2
$t1, $s6
0($t1)
$s5, Exit
$s3, 1
Summary


Conditional Instructions

beq

bne

j
Converting a C Program to MIPS
What I want you to do


Review Chapter 2
Work on your assignment 4

similar documents