Man*_*tty 3 assembly branch arm instruction-set
此测试要求在“BGE”条件下分支到标签。正在比较的寄存器中存储的值是:
LDR r0,=0X3
LDR r1,=0X8F
CMP r0,r1
BGE a_label
SUBS r1,r1, #0XC9
Run Code Online (Sandbox Code Playgroud)
我预计它会分支,但不知何故 0X8F 不大于 0X3。在 Keil 上模拟我的代码证明了这一点。
我想知道是否有人知道为什么它不分支以及 0X8F 如何被读取为大于 0X3!
非常感谢<3
CMP我认为您误解了条件代码的“比较”变体的工作方式。当您读到CMP后面跟着条件指令时,在您的脑海中,将条件代码移动到 的两个参数之间CMP。因此
CMP r0, r1
BGE label
Run Code Online (Sandbox Code Playgroud)
意思是“如果r0大于或等于则转移r1”。在你的例子中r0是 3 并且r1是 0x8F (143) ,所以显然分支不会发生。
| 归档时间: |
|
| 查看次数: |
19921 次 |
| 最近记录: |