若这里的PC值为其它值,算出来的转移地址也会随之改变,所以BL指令为地址无关码,跳转地址与位置无关。 注:ARM9是3级流水线,也就是PC处理时正在执行第1条指令的同时对第2条指令进行译码,并将第3条指令从存储器中取出,如下图所示,PC总是指向第3条指令取值的地方。
BL指令用于实现带链接的跳转,即将当前指令的下一条指令的地址(即返回地址)保存到链接寄存器(LR,Link Register)中,然后跳转到指定的目标地址执行代码。这通常用于函数调用。跳转机制和工作原理: 当执行BL指令时,处理器首先会将当前指令的下一条指令的地址(即PC+4,因为ARM指令是32位,即4字节)保存到LR寄存器中。
BL指令的[23,0]位存放的是要跳转的相对地址,由于指令所在地址必须是4字节对齐的,因此跳转的地址最低位必然是0。 BL指令[23,0]位保存的是省略这最低2位的地址,如果补全了这2位,BL指令就可以表示26位的跳转地址。在这26位中需要使用1位表示向前跳还是向后跳,那么剩下的25位就可以表示32 MBts的范围了,225=...
与BL指令的不同之处在于它返回到Thumb状态,而不是ARM状态。 8.1 跳转指令B及带连接的跳转指令BL 1.指令编码格式 跳转指令B使程序跳转到指定的地址执行程序。带连接的跳转指令BL将下一条指令的地址拷贝到r14(即返回地址连接寄存器LR)寄存器中,然后跳转到指定地址运行程序。需要注意的是,这两条指令和目标地址处的指...
arm B和BL指令浅析 B或BL指令引起处理器转移到“子程序名”处开始执行。 两者的不同之处在于: (1)BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。 由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。
BL 指令的格式为: BL<c> BL 是另一个跳转指令,但跳转之前,BL指令会自动将下一条指令的地址保存到LR寄存器,因此,可以通过将R14 的内容重新加载到PC 中,来返回到跳转指令之后的那个指令处执行。该指令是实现子程序调用的一个基本但常用的手段。 BX 指令...
首先,B和BL指令分为两类:普通分支指令B和带返回的分支指令BL。B指令,如汇编格式所示的B {cond} label,其条件执行(cond)和目标地址(24位立即数)决定了指令的执行。例如,一个简单的示例是:assembly LDR R0 = 0X100000000 MOV R1 #0X01 STR R1 [R0]forward: b backward 在这个例子中,当...
对于B指令“B WAITA”指跳转至标号WAITA处开始执行,B指令的跳转范围为±32M,对于BL指令,实现程序跳转,并保持PC到链寄存器LR中,跳转范围±32M,举例“BL DELAY”完成的跳转至标号DELAY处执行,并把PC-4存入LR。BX指令,带状态切换的跳转,比如“BX R0”表示跳转R0指定的地址开始执行,并查看R0[0]位的值,如果是1,...
答:B与BL都可以使程序跳转到指定的地址(label)处执行程序 B 跳转指令 ﻩ ﻩpc←label BL 带返回的连接跳转 pc←label,同时将BL下一条指令地址保存到LR BX使程序跳转到指令中指定的地址执行程序,并将的第0位复制到CPSR中T位,BX BX 跳转并切换状态 pc←Rm&0xfffffffe,T←Rm[0]结果...
答:BX指令是分支和交换指令,寄存器的地址是目标地址其中的位 [0]不是地址信息, 当寄存器的位[0]为1时,表明目标地址处是 Thumb指令,当寄存器的位[0]为0时, 表明目标地址是 ARM指令,此时,要求字对准,BL指令是分支和链接指令,将一条 指令的地址复制到 R14,并引起处理器移位到目标地址,但目标地址不可以是 ARM...