assembly - 在这个例子中如何解释 BLO
问题描述
在这个例子中,我试图弄清楚 BLO 正在比较什么。如果未设置进位标志,我知道它会分支。是否将 r1 与旧的 r1 进行比较(上面的指令?)因为代码不在 BGE 处分支。非常感谢。
LDR r0,=0X3
LDR r1, =0X8F
CMP r0,r1
BGE a_label
SUBS r1,r1,#0XC9
a_label BLO stop
SUBS r1,r1,#0X7D
stop
解决方案
在没有CMP
指令的情况下解释条件代码可能会很棘手,因为助记符的编写是为了在有CMP
. 但在这个例子中,它并没有那么糟糕:记住这CMP
只是SUBS
丢弃了结果,所以
SUBS r1, r1, #0xC9
BLO stop
表示相同的条件
CMP r1, #0xC9
BLO stop
但在 中留下不同的结果r1
。因此,条件是它会在r1
(旧值)小于0xC9时分支,在无符号意义上——换句话说,当SUBS
结果导致 的无符号值回绕时r1
。
推荐阅读
- admin-on-rest - TypeError:翻译不是函数
- kubernetes - 试图了解法兰绒与法兰绒吊舱的用法
- hyperledger - 每次都处于挂起状态的交易
- amazon-dynamodb - 如何在 DynamoDB 中的单个查询中查询一个应该存在而另一个不应该存在于表中的条件
- .net - 如何使用 VB.NET 应用程序动态获取 AssemblyCustomAttribute 的值?
- android - ReactXP VirtualListView 未在 Android 上显示
- c# - 在鼠标处绘制一个矩形 C#
- c++ - 为什么使用 ffmpeg avcodec_send_frame 函数会导致分段错误?
- html - 没有水平滚动条的溢出屏幕自定义导航栏(引导)
- java - android中带有Recyclerview的报警管理器