c文件中,定义一个结构体
struct CtrlTag
{
struct CtrlTag
{
int32_t var1:
int32_tvar2:
.
.
.
.int32_t var512
}buck;
}l_ctrl;
在asm中
.ref l_ctrl
MOVL XAR0, #_l_Ctrl.buck.var1
MOVL *XAR0,ACC
。。。。。
MOVL XAR0, #_l_Ctrl.buck.var2
MOVL *XAR0,ACC
。。。。。
MOVL XAR0, #_l_Ctrl.buck.var3
MOVL *XAR0,ACC
。。。。。
MOVL XAR0, #_l_Ctrl.buck.var4
MOVL *XAR0,ACC
。。。。。
MOVL XAR0, #_l_Ctrl.buck.var5
MOVL *XAR0,ACC
问题:
我的ASM文件中,在不同的地方,要将 ACC的数据写入到结构体中的var1 ~ var5。
仿真时发现,var1 ~ var5这5个变量中,有的变量可能会出现写入错误(可能是var1,var2,var4是正确的,var3,var5是错误的)。
断点定到MOVL *XAR0,ACC,通过查看 Registers -> core Registers -> XARn ,
发现 XARn 保存的并不是 #_l_Ctrl.buck.varN的地址!
请问,这是什么问题?
user1601657:
回复 mangui zhang:
好建议,谢谢!
下次可以尝试一下。
想确认一下。
MOVL XAR0, #_l_Ctrl.buck.var5 :将 var5的地址放到XAR0MOVL *XAR0,ACC ;将ACC 写到var5
这样理解没问题吧?