所以我正在尝试学习这个测试,学习指南中的一个内容为我们提供了一些ARM代码,并告诉我们根据代码的运行方式填写分支预测表。
我可以理解我应该怎么做,但是通过分支预测,实际结果也会发挥作用,我无法从代码中找出结果(每个周期)。代码是:
MOV r0, #4
B1 MOV r2, #5; Branch 1
SUB r2, r2, r0
B2 SUBS r2, r2, #1; Branch 2
BNE B2
SUBS r0, r0, #1
BNE B1
令我困惑的是BNE声明。通常当我看到其中一个条件语句时,代码中有一个CMP语句,这样我就可以知道是否接受分支。但是我在这段代码中看不到任何比较语句,所以我不知道如何判断我是否应该选择分支。
答案 0 :(得分:0)
SUBS
执行减法并在一条指令中与结果的零进行比较。 BNE
条件分支使用由这些SUBS
指令