ARM汇编: B、BL 与R14(LR)、R15(PC)

1. b与bl指令的作用是什么?

    b与bl指令的作用:实现程序跳转,也就是调用子程序。

2. b与bl指令的区别是什么?

    b与bl指令的区别:

     b指令:简单的程序跳转,跳转到到目标标号处执行。

     bl指令:带链接程序跳转,也就是要带返回地址。在发生跳转前,将当前PC-4保存到R14中。也就是返回地址存在R14中,所以可以在子程序返回时只要MOV PC, LR即可。

3. 什么是R14?

   在ARM处理器中使用 R14实现对断点和调用点的记录,即使用R14用作返回链接寄存器(LR )。

   在硬件上和指令执行上,CPU自动完成相应返回点的记录。在ARM 汇编语言程序设计时,R14和LR通用。

  3.1

   ARM处理器相应异常时,会自动将当前的PC值保存到LR寄存器。

  3.2

   ARM处理器执行子程序调用指令(BL )时,会自动将当前的PC值减去4并保存到LR寄存器,即将调用指令的下紧邻指令的地址保存到LR。

    

   ARM处理器针对不同的模式,共有6个链接寄存器资源(LR ),其中用户模式和系统模式共用一个 LR,每种异常模式都有各自专用的R14 寄存器(LR)。
   这些链接寄存器分别为 R14、R14_svc、R14_abt、R14_und、R14_irq、R14_fiq,

   程序设计者要清晰处理器的模式与相应寄存器的对应关系,都是使用 R14,但不同模式下的R14 不是同一个物理资源,其内容可能天壤之别。
   R14 不用做链接寄存器(LR )时,也可以用做通用数据寄存器。

4. 

   ARM 处理器中使用R15 作为PC,它总是指向取指单元,并且ARM 处理器中只有一个PC 寄存器,被各模式共用。R15 有32 位宽度, 可以直接寻址4GB的地址空间(2^32 = 4G)。

   ARM 体系要求32 位长的ARM 指令在存储器中必须字对齐存储,16 位长的 Thumb 指令必须半字对齐存储

   因此,在ARM 状态下,R15的值总是能被4 整除,也就是R15寄存器的最低2位总是0; Thumb 状态下,R15的值总是能被2整除,也就是R15寄存器的最低位总是0。

.

/************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/14184055.html