当前位置: 首页 > news >正文

ARM 汇编指令:ORRS

ARM 汇编指令:ORRS

在 ARM 架构中,ORRS是一条按位逻辑或(OR)指令,并且会根据操作结果更新条件标志位


1.基本含义

  • ORR= 逻辑或(Bitwise OR)
  • S= 后缀,表示该指令执行后要更新APSR(应用程序状态寄存器)中的条件标志位(主要是 N、Z、C、V 中的相关位)。

指令格式通常为:
ORRS Rd, Rn, Operand2
作用是将RnOperand2按位进行逻辑或运算,结果存入Rd,并更新标志位。


2.运算规则

  • 按位或:Rd = Rn | Operand2
  • Operand2可以是立即数、寄存器或经过移位/旋转的寄存器。

例如:

ORRS R1, R2, R3 ; R1 = R2 | R3,并更新标志位 ORRS R0, R0, #0x8 ; 将 R0 的 bit3 置 1,并更新标志位

3.影响的条件标志位

执行ORRS后会更新:

  • N(Negative):结果的最高位(bit31)为 1 则置 1。
  • Z(Zero):结果为 0 则置 1。
  • C(Carry):如果Operand2是立即数或移位寄存器,则标志可能由移位器的进位输出更新(与ORR不带 S 时相同,但 ORRS 会写入 APSR)。
  • V(Overflow):不受影响(保持原值)。

4.典型用途

  1. 设置特定位检查结果是否为 0 或负数

    ORRS R0, R1, R2 ; 做 OR,同时根据结果设置 Z 和 N BEQ zero_result ; 如果结果为 0 则跳转
  2. 测试两个值的位组合,同时丢弃结果只留标志(常用TST指令更直接,TST本质上就是ANDS但不存结果)。
    ORRS可以类似地用于测试,不过更常见的是用ANDSTST做位测试。

  3. 在需要组合位且同时更新标志以便后续条件执行时使用。


5.与普通 ORR 的区别

  • ORR:只做运算,不更新标志位。
  • ORRS:运算并更新 N、Z、C 标志。

6.示例

MOV R2, #0 ORRS R1, R2, #0 ; R1 = 0,Z = 1, N = 0 BNE somewhere ; 不会跳转,因为 Z=1 表示相等(结果为0)
MOV R2, #0x80000000 ORRS R1, R2, #0 ; R1 = 0x80000000,最高位为1 ; 结果不为0 → Z=0 ; 最高位为1 → N=1

7.在 Thumb/Thumb-2 中的可用性

在 ARMv6T2 及更高版本中,大多数形式的ORRS在 Thumb-2 中可用(包括窄指令和宽指令)。在早期的 Thumb 中(ARMv4T/ARMv5),ORRS有受限的寄存器范围(如ORRS Rd, Rd, Rm,Rd 和 Rm 必须是低寄存器 R0–R7)。


8.注意

  • 如果你只需要置位而不关心标志,用ORR即可。
  • 如果需要测试两个寄存器是否同时为 0 的位模式,更常用TST Rn, Operand2(即ANDS但不存结果)。
  • ORRS在编写需要条件执行的代码时很有用,例如在循环或状态判断中。
http://www.cnnetsun.cn/news/120112.html

相关文章:

  • 好无聊,最近没思路
  • Kotaemon水务管理系统智能预警机制
  • Kotaemon视频内容摘要生成实验记录
  • 用Matlab探索齿轮系统的奥秘:刚度计算与动力学响应
  • 【node阅读-0】下载编译node
  • EmotiVoice支持动态情感过渡,实现平滑情绪变化
  • EmotiVoice推理时显存占用优化方案(适用于低配GPU)
  • EmotiVoice支持HTTPS加密传输,保障数据安全
  • 2025年最新AI编程助手深度横评:按功能类型选对你的“副驾”
  • - - - 正则表达式匹配 diff - - -
  • Kotaemon支持PDF/PPT/Word等多种文档解析
  • Kotaemon在制造业知识管理中的创新应用案例
  • Kotaemon配置文件全参数说明,新手必看!
  • EmotiVoice语音合成结果的跨设备播放一致性测试
  • EmotiVoice语音合成安全性分析:防止恶意声音克隆的机制
  • rrweb 原理:基于 DOM 变动(MutationObserver)的会话录制与回放
  • 智能仓储进化史㉚ | 特斯拉Optimus能搬货了,但人形机器人真的是未来吗?
  • 10、Mac OS X 下的 UNIX 开发工具
  • 13、Apple开发工具全解析:GUI与命令行工具的高效运用
  • 20、AppleScript编程入门与实践
  • 2026年SEVC SCI2区,当机器人向自然学习:GLWOA-RRT*受自然启发的运动规划方法,深度解析+性能实测
  • 24、Mac OS与UNIX命令映射及系统特性解析
  • EmotiVoice语音合成中的语速自适应调节功能介绍
  • 基于EmotiVoice的情感化TTS应用场景全解析
  • EmotiVoice语音情感标注数据集构建方法分享
  • PyQt(12)TreeWidget与TreeView对比
  • 10分钟变身LOL大神:LeaguePrank身份伪装完整指南
  • 5分钟掌握LOL游戏形象定制:LeaguePrank合规美化工具使用指南
  • ConnectivityFilter数据集中分离的区域或连通分量
  • AI 编程的“90% 陷阱”:为什么你生成代码 1 分钟,修 Bug 却要 1 小时?