news 2026/6/21 19:49:27

ARM 汇编指令:ORRS

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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在编写需要条件执行的代码时很有用,例如在循环或状态判断中。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 4:09:31

腾讯菁英班跨端日历应用产品报告

仓库地址 https://github.com/ceilf6/DayMatetitle: DayMate 产品报告 author: 王景宏 date: \today pdf-engine: xelatex documentclass: ctexart classoption: fontsetnone mainfont: Songti SC monofont: Hiragino Sans GB fontsize: 12pt geometry: margin2.5cm lines…

作者头像 李华
网站建设 2026/6/20 7:54:52

EmotiVoice支持语音情感历史记录回溯功能

EmotiVoice 实现语音情感记忆:让AI“记得”它的情绪 在虚拟助手轻声安慰你之前,它是否还记得上一次对话中你语气里的疲惫?当游戏角色因剧情转折而愤怒咆哮时,它的声音变化是突兀的切换,还是情绪层层累积的结果&#x…

作者头像 李华
网站建设 2026/6/12 23:45:06

EmotiVoice语音合成中的多音字准确识别率提升

EmotiVoice语音合成中的多音字准确识别率提升 在智能语音助手动辄“把‘银行’读成‘yn xng’”的年代,用户早已对TTS系统的“读错字”习以为常。然而,当AI开始朗读《红楼梦》或医学文献时,一个“重”字念错声调,就可能让听众瞬间…

作者头像 李华
网站建设 2026/6/22 11:13:50

Python 实战:手把手教你开发百度网盘全功能开发者工具

在数字化时代,自动化管理云盘文件是许多开发者的共同需求。百度网盘开放平台(XPAN)提供了强大的 API,但对于初学者来说,身份认证(OAuth 2.0)和权限校验(尤其是令人头疼的 31064 错误…

作者头像 李华
网站建设 2026/6/15 10:46:03

Kotaemon前端交互界面开源项目推荐

Kotaemon:构建生产级智能对话系统的开源利器 在大模型能力日益普及的今天,越来越多企业开始尝试将 LLM 应用于客服、知识问答、技术支持等实际场景。但很快就会遇到一个共性问题:模型“说得漂亮”,却常常“答非所问”——给出的回…

作者头像 李华