请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28379D 您好!
我的指令 POP AR5:AR4有奇怪的问题。
我的示例代码:
MOVW DP、#_EPwm4Regs.CMPA.bit.CMPA 按 μ@ EPwm4Regs.CMPA.bit.CMPA MOVW DP、#_EPwm8Regs.CMPA.bit.CMPA 按 μ@ EPwm8Regs.CMPA.bit.CMPA MOVW DP、#_EPwm3Regs.CMPA.bit.CMPA 按 μ@ EPwm3Regs.CMPA.bit.CMPA MOVW DP、#_EPwm7Regs.CMPA.bit.CMPA 按 μ@ EPwm7Regs.CMPA.bit.CMPA MOVW DP、#_EPwm6Regs.CMPB.bit.CMPB 按 μ@ EPwm6Regs.CMPB.bit.CMPB MOVW DP、#_EPwm6Regs.CMPA.bit.CMPA 按 @_EPwm6Regs.CMPA.bit.CMPA 弹出 AR5:AR4
从指令集说明 POP AR5:AR4的工作方式应如下:
SP -= 2; AR4 =[SP]; AR5 =[SP+1];
但是、在系统中进行调试后、其工作方式如下:
SP =-2; AR4 =[SP-1]; AR5 =[SP];
因此、在进行更多挖掘后、我发现问题在于堆栈指针未对齐。 例如、如果我们将奇数16位值压入栈、并且尝试 POP ARN:ARM、则会导致错误值。
我认为这个问题很有问题、因此应该在 POP/PUSH 说明中提及。