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

ARM汇编中能否更新常量?能否实现如下示例代码逻辑?

ARM汇编中能否更新常量及正确实现方式

首先要明确:用.equ定义的是汇编阶段的符号常量,它在编译时会被直接替换为对应的数值,运行时内存中不存在这个"变量",所以完全没法在运行时修改它。你给出的代码存在两个核心问题:

  • mov r1, #numbers是把常量0加载到r1寄存器,而非变量的内存地址;
  • str numbers [r1]语法错误,且numbers是编译时常量,没有可读写的内存空间供你写入。

如果要实现"循环自增一个值并保存"的功能,你需要在.data段定义一个可读写的变量,而非用.equ定义常量,正确代码示例如下:

.data
    numbers: .word 0  @ 在数据段定义一个32位可读写变量,初始值设为0
.text
infloop:
    ldr r1, =numbers  @ 将变量numbers的内存地址加载到r1
    ldr r2, [r1]      @ 从内存中读取numbers的当前值到r2
    add r2, r2, #1    @ 将r2的值自增1
    str r2, [r1]      @ 把更新后的值写回numbers的内存地址
    b infloop         @ 跳转到infloop标签,进入无限循环

这段代码的逻辑是:每次循环先获取变量的内存地址,读取当前值,自增后再写回内存,这样就能实现你想要的"持续更新一个值"的效果。

内容的提问来源于stack exchange,提问作者нуль

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:45:37