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

使用汇编ADDS指令时出现R3寄存器不存在错误,求助

ARM汇编ADDS指令报错解决

问题根源

  1. 指令格式误用:你指定的ADDS DST, S1, S2IMM格式中,S2IMM要求是立即数,但你写的ADDS R3, R1, R2用了寄存器R2作为第三操作数,不符合该格式定义。
  2. 寄存器访问限制:报错“R3不存在”几乎都是因为当前处于ARM Thumb-1指令集模式,该模式下部分指令仅支持访问R0-R7寄存器,若R3不在当前可用寄存器范围内就会触发错误。

针对性修正方案

场景1:需要使用立即数相加(匹配你给出的格式)

严格遵循S2IMM为立即数的要求,示例代码:

ADDS R3, R1, #0x5  ; R1 + 立即数0x5,结果存入R3

场景2:寄存器R1和R2相加(你的实际需求)

使用寄存器操作数版本的ADDS指令(ARM指令集标准格式ADDS <Rd>, <Rn>, <Rm>),同时解决寄存器访问问题:

  1. 先切换到支持全寄存器访问的模式(如Thumb-2或ARM模式)
  2. 编写正确的相加指令
    示例代码:
.thumb2  ; 切换到Thumb-2模式,解除R0-R7以外寄存器的访问限制
ADDS R3, R1, R2    ; R1与R2相加,结果存入R3

额外检查点

  • 若使用ARM模式,可直接在代码开头添加.arm指令,无需寄存器范围顾虑
  • 确认当前运行环境的特权级别:某些特权模式下会保留特定寄存器,需确保R3为当前模式下的通用可访问寄存器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:25:05