【无标题】STM32简单的赋值语言,转为汇编之后变量自增?

STM32简单的赋值语言,转为汇编之后变量自增?

keil工具进入仿真模式后,赋值导致变量自增。

情况是:将结构体指针的成员赋值给另一个结构体的成员。
c代码为:Config.AccountBalance = handler->balance;
对应的汇编为:LDR r0,[r4, #0x09]!
如图

在这里插入图片描述

正常赋值如下(并没有转为LDR+!):
在这里插入图片描述

查阅相关汇编:
LDR R0,[R1,#8] ;将存储器地址为R1+8的字数据读入寄存器R0。
LDR R0,[R1,#8]! ;将存储器地址为R1+8的字数据读入寄存器R0,并将新地址R1+8写入R1。
对应的:r0 = r4 + 0x09的偏移地址,但是!对应:r4 = r4 + 9,会导致handler地址 + 9。

不理解为什么无故使用LDR加 !。有哪位兄弟可以解答一下嘛?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值