Branches and Jumps
Up to now: sequential instructions (strictly in order)
What other kinds of instructions do we need (think of kinds of C statements)?
selection (if/else, switch)
looping (for, while)
function calls
There is no such thing as selection or loop statement in machine language
only the evil G-word (goto)
In assembly language, change the order of execution with a branch or jump
branch: conditional (not always)
jump: unconditional (always)
What does it mean to branch?
Normally, PC <--- PC + 4 changes PC to point to next sequential instruction
Why add 4?
Because each instruction is 32 bits (4 bytes)
Jump: PC <--- target_location
Conditional branch ("branch"):
if (condition)
PC <--- target_location
else
PC <--- PC + 4
Unconditional branch ("jump"):
goto target_location