ARM指令 BCC什么意思? 5

LDRR3,[R0]CMPR3,R1BCCLooptest这里的BCC什么意思?... LDR R3, [R0]
CMP R3, R1
BCC Looptest
这里的BCC什么意思?
展开
 我来答
开旭东0g4507
推荐于2021-06-16 · TA获得超过5101个赞
知道答主
回答量:30
采纳率:0%
帮助的人:6934
展开全部

BCC是指CPSR寄存器条件标志位为0时的跳转。结合CMP R3, R1,意思是比较R3 R1寄存器,当相等时跳转到环测试。因为CMP指令减去两个值并在CPSR中设置条件标志位。

扩展资料:

当ARM跳转指令从当前指令向前或向后的32MB地址空间跳转时,这类跳转指令有以下4种:

(1)B 跳转指令

B〔条件) (地址)

B指令属于ARM指令集,是最简单的分支指令。一旦遇到一个B指令,ARM处理器将立即跳转到给定的地址,从那里继续执行。

(2)BL 带返回的跳转指令

BI,〔条件) (地址)

BL指令也属于ARM指令集,是另一个分支指令。就在分支之前,在寄存器R14中装载上R15的内容,因此可以重新装载R14到R15中来返回到这个分支之后的那个指令处执行,它是子例程的一个基本但强力的实现。

(3)BLX 带返回和状态切换的跳转指令

BLX <地址>

BLX指令有两种格式,第1种格式的BLX指令记作BLX(1)。BLX(1)从ARM指令集跳转到指令中指定的目标地址,并将程序状态切换到Thumb状态,该指令同时将PC寄存器的内容复制到LR寄存器中。

BLX(1)指令属于无条件执行的指令。

第2种格式的BLX指令记作BLX(2)。BLX(2)指令从ARM指令集跳转到指令中指定的目标地址,目标地址的指令可以是ARM指令,也可以是Thumb指令。目标地址放在指令中的寄存器<dest>中,该地址的bit[0]值为0,目标地址处的指令类型由CPSR中的T位决定。

(4)BX 带状态切换的跳转指令

BX(条件) (dest)

BX指令跳转到指令中指定的目标地址,目标地址处的指令可以是ARM指令,也可以是Thumb指令。目标地址值为指令的值和0xFFFFFFFE做“与”操作的结果,目标地址处的指令类型由寄存器决定。

参考资料:百度百科-ARM指令集

meowMan
2019-08-05 · TA获得超过1248个赞
知道答主
回答量:10
采纳率:0%
帮助的人:1674
展开全部

BCC 是指当CPSR寄存器条件标志位为0时跳转。

结合上一句CMP R3,R1,则是指比较R3 R1寄存器,当相等时跳转到Looptest。因为CMP指令是将两值相减并设置CPSR中的条件标志位。

扩展资料:

arm跳转指令

通过直接向PC寄存器中写入目标地址值可以实现在4GB地址空间中任意跳转,这种跳转指令又称为长跳转。

如果在长跳转指令之前使用MOV LR,PC等指令,则可以保存将来返回的地址值,这样就实现了在4GB地址空间中的子程序调用。

在ARM版本5及以上的体系中,实现了ARM指令集和Thumb指令集的混合使用。指令使用目标地址值的bit[0]来确定目标程序的类型。

bit[0]的值为1时,目标程序为Thumb指令;bit[0]值为0时,目标程序为ARM指令。

在ARM版本5以前的体系中,传送到PC寄存器中的目标地址值的低两位bits[1∶0]被忽略,跳转指令只能在ARM指令集中执行,即程序不能从ARM状态切换到Thumb状态。

非T系列ARM版本5体系不含Thumb指令,当程序试图切换到Thumb状态时,将产生未定义指令异常中断。


参考资料来源:百度百科-ARM指令集

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2_酒一盅
推荐于2017-05-21
知道答主
回答量:8
采纳率:0%
帮助的人:1万
展开全部
BCC 是指当CPSR寄存器条件标志位为0时跳转

结合上一句CMP R3,R1,则是指比较R3 R1寄存器,当相等时跳转到Looptest
因为CMP指令是将两值相减并设置CPSR中的条件标志位
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2064533
2021-06-16
知道答主
回答量:1
采纳率:0%
帮助的人:468
展开全部
上述回答者,对BCC指令解释的都很到位。
即当CPSR中的标志位C被清零( CC - C clear),发生跳转。但是C不代表相等,而是代表是否产生借位。

当执行到CMP R3, R1时候,硬件会用R3-R1,如果R3 < R1,便发生借位,C被清0,才会跳转至Looptest。
望采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友60ca9eb
2015-02-03 · TA获得超过1175个赞
知道小有建树答主
回答量:403
采纳率:0%
帮助的人:476万
展开全部
跳转指令
Branch if C Clear ,
如果C Clear了就跳转到Looptest。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式