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

ARM汇编使用stmfd/ldmfd指令报expression too complex错误如何解决

错误原因

ARM架构的多寄存器加载/存储指令(LDM/STM系列,包含你使用的stmfd、ldmfd)的寄存器列表要求用花括号{} 包裹,你代码中错误使用了方括号[],汇编器无法识别该格式的寄存器列表,因此抛出表达式复杂的报错。
补充说明:方括号[]在ARM汇编里的作用是标记内存地址间接寻址,比如你代码中ldr r1, [r0]属于正确用法,不能用于多寄存器指令的寄存器列表位置。

解决方法

将两行报错指令中的方括号替换为花括号即可,修正后的完整代码如下:

.data
integer:    .long   25

        .text
        .global main
main:   stmfd sp!, {lr}
        ldr r0, =integer
        ldr r1, [r0]
        add r1, #2
        str r1, [r0]
        ldmfd sp!, {lr}
        mov pc, lr

如果后续需要批量操作多个寄存器,直接在花括号内用逗号分隔、或者范围写法即可,比如stmfd sp!, {r0-r3, lr}是ARM汇编中常见的入栈写法,完全符合指令语法规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:30:02