Branches and Jumps | ||||||||||||
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 | ||||||||||||