You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thumb2汇编中优化有符号整数比较赋值逻辑的技术问询

Thumb2汇编优化:有符号整数比较后设置r1为-1或0

针对需求:当有符号整数r0 < r1时将r1设为0xffffffff(-1),否则设为0,以下是比现有实现更高效的优化方案:

优化方案1(代码空间+执行周期最优)

cmp     r0, r1        ; 比较r0和r1,设置标志位
mvnlt   r1, #0        ; 当r0 < r1(有符号lt条件满足)时,r1 = ~0 = 0xffffffff
movge   r1, #0        ; 否则r1 = 0
  • 代码字节数:8字节(原实现为10字节)
  • 指令数量:3条(原实现为4条)
  • 原理:mvnlt是Thumb2的32位条件执行取反指令,直接在满足lt条件时生成全1值,无需额外的ite前缀指令,减少了指令开销。

优化方案2(逻辑直观)

cmp     r0, r1        ; 比较r0和r1,设置标志位
mov     r1, #0        ; 先将r1初始化为0
addlt   r1, r1, #-1   ; 当r0 < r1时,r1 += -1 → 0xffffffff
  • 代码字节数:8字节
  • 指令数量:3条
  • 原理:先统一清零r1,再针对lt条件做加法赋值,逻辑更直观,执行效率与方案1一致。

对比原实现的优势

原实现使用ite lt前缀配合两条条件mov指令,需要额外的2字节前缀指令,且多一条指令执行开销。优化后的方案直接用单条条件数据处理指令完成赋值,既节省了代码空间,又减少了执行周期。

注:无符号整数场景的sbcs r1, r1技巧无法直接复用(因为有符号lt依赖N和V标志的异或结果,而非进位标志C),上述方案是Thumb2环境下针对有符号比较的最优实现。

内容的提问来源于stack exchange,提问作者Dongzin Choi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:57:44