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加 !。有哪位兄弟可以解答一下嘛?