0
0
ARM Architectureknowledge~5 mins

Branch and link (BL) for subroutines in ARM Architecture

Choose your learning style9 modes available
Introduction

The BL instruction helps the program jump to a different part of the code to run a subroutine, then come back to continue where it left off.

When you want to run a set of instructions multiple times from different places.
When you need to organize code into smaller, reusable parts.
When calling functions or procedures in assembly language.
When you want to save the return address automatically before jumping.
When implementing modular programming in ARM assembly.
Core Concept
ARM Architecture
BL label

BL stands for Branch and Link.

The label is the address or name of the subroutine to jump to.

Key Points
This jumps to the subroutine named subroutine_start and saves the return address.
ARM Architecture
BL subroutine_start
This jumps to the memory address 0x1000 and saves the return address.
ARM Architecture
BL 0x1000
Detailed Explanation

This program starts by putting 5 into register R0. Then it calls the subroutine multiply_by_two using BL. The subroutine doubles the value in R0 and returns. After returning, R0 holds 10.

ARM Architecture
        AREA Example, CODE, READONLY
        ENTRY
start   MOV R0, #5          ; Load 5 into R0
        BL  multiply_by_two  ; Call subroutine
        ; After return, R0 has the result
        END

multiply_by_two
        ADD R0, R0, R0      ; Multiply R0 by 2
        BX LR               ; Return to caller
OutputSuccess
Important Notes

The BL instruction saves the return address in the link register (LR), so you can return with BX LR.

Always use BX LR or similar to return from the subroutine to the caller.

BL is different from B (branch) because B does not save the return address.

Summary

BL jumps to a subroutine and saves the return address automatically.

Use BL to call functions or reusable code blocks in ARM assembly.

Return from subroutines using BX LR to continue execution after the BL call.