tags:
- notes
- lecture
- bsu
- spring-2025
- ece-330
- microprocessors
- school
source: https://boisestatecanvas.instructure.com/courses/36351/files/folder/Lectures?preview=17499338
created: 2025-02-05
What is a subroutine?
A subroutine is a block of code that performs a task based on some arguments and optionally returns a result.
What is the Branch and Link (BL
) instruction do?
The BL
instruction calls subroutines by using the Link Register (LR) to hold the return-from address.
...
CBZ R3, label
- Compare R3
to zero. If R3 == 0
(Z = 1
), then branch to label
. Otherwise, do the following instruction.CBNZ R3, label
- Compare R3
to zero. If R3 != 0
(Z = 0
), then branch to label. Otherwise, do the following instruction.CMP R3, R4
- Compare R3
to R4
using R3 - R4
and update the status flags. If R3 < R4
, then set the N
flag to 1. If R3 == R4
, then set the Z
flag to 1.CMP R3, #15
- Compare R3
to 15 using R3 - 15
and update the status flags...CMN R3, R4
- Compare negative R3
to R4
using R3+R4
and update the status flags. If R3 < -R4
, then set the N
flag to 1. If R3 == -R4
, then set the Z
to 1.What are the different branch instructions and their behavior?
The different branch instructions and their behavior include:
B, label
- Go to the code starting at label
.BEQ label
- Go to the code starting at label
if Z == 1
(equal). BNE label
- Go to the code starting at label
if Z == 0
(not equal).BLT label
- Go to the code starting at label
if N == 1
(less than).BGT label
- Go to the code starting at label
if N == 0
(greater than).BGE label
- Go to the code starting at label
if N == 0
or Z == 1
(greater than or equal to).