ARM编程中的子程序调用、时间延迟与指令流水线
1. 使用BL指令调用子程序
在ARM编程里,子程序是经常被使用的,它使程序结构更清晰,还能节省内存空间。而 BL (Branch and Link)指令作为控制转移指令,专门用于调用子程序。
在使用 BL 指令时,要保证 R14 寄存器不被占用。因为ARM CPU会把返回地址存储在 R14 寄存器(也称为链接寄存器 LR )里。 BL 指令是32位的,其中8位是操作码,另外24位( k23 - k0 )用于指定目标子程序的地址,所以它能调用ARM 32M地址空间内的任何子程序。
当执行 BL 指令调用子程序时,处理器会自动把 BL 指令下一条指令的地址保存到 R14 寄存器,然后将控制权转移到子程序。子程序执行完毕后,需要使用 BX LR 指令把控制权返回给调用者。
下面通过示例4 - 8来理解 R14 寄存器在 BL 指令和返回过程中的作用:
AREA EXAMPLE4_8, CODE, READONLY
ENTRY
RAM_ADDR EQU 0x40000000 ;change the address
超级会员免费看
订阅专栏 解锁全文
1539

被折叠的 条评论
为什么被折叠?



