CONTRILSUITE中有关移相全桥有些汇编代码有点奇怪.您能否帮助解释一下,在此先谢谢!
1,;=============================
CNTL_2P2Z .macro n
;=============================
; set up address pointers
MOVW DP, #_CNTL_2P2Z_Ref:n:
这里的N是否可以理解为参数,若N=1,如上是否可等价于..... #_CNTL_2P2Z_Ref1?将_CNTL_2P2Z_Ref1所处数据页指针给DP?同#立即数赋数值不同?
MOVL XAR1, @_CNTL_2P2Z_Fdbk:n: ; net pointer to Fdbk (XAR1)
将_CNTL_2P2Z_Fdbk:n:内容给XAR1吗?
MOVW DP,#_CNTL_2P2Z_DBUFF:n:
MOVL XAR4, #_CNTL_2P2Z_DBUFF:n: ; pointer to the DBUFF array (used internally by the module)
将_CNTL_2P2Z_DBUFF:n指针给XAR4吗?
; calculate error (Ref - Fdbk)
MOVL ACC, *XAR0 ; ACC = Ref (Q24) = Q(24)
结合前面代码,将_CNTL_2P2Z_Ref:n:内容作为指针的值传给ACC呢?
SUBL ACC, *XAR1 ; ACC = Ref(Q24) - Fdbk(Q24)= error(Q24)
同样,减XAR1的内容还是减指针的内容?
MOVL *+XAR4[4], ACC ; e(n) = ACC = error Q{30}
*+XAR4[4]相当复杂,结合顺序如何,如何赋值?
MOV AR0,#8
是AR0=8吗?
MOVL XT, *+XAR4[AR0] ; XT = e(n-2)
*+XAR4[AR0]如何理解?
QMPYL P, XT, *XAR3++ ; P = e(n-2)Q30*B2{Q26} = I8Q24
三段一般阅读规律如何,是P=XT乘*XAR3后XAR3内容或指针或值加1吗?
*XAR3++如何解读?这里如何知晓Q30,Q26,Q24?
MOVDL XT, *+XAR4[6] ; XT = e(n-1), e(n-2) = e(n-1)
是先将*XAR4[6]指针+1内容给XT?
2,net pointer 是何目的,有合适中文吗?
3,Q浮点数据,如何确定是Q18,Q同一个数据,针对不同的Q有不同的10进制值.如何判定?是有接收的变量定还是输入时必须带Q标记?如下,如何确定他的10进制值?
DCDC_VLOOP_COEFF1:
.long 141465485 ; B2
4,Signal Nets和Terminal pointers中文及意义是啥?
Step3. (optional) Declare “Signal Nets” to “connect” the module to in “C”
int Net1, Net2, Net3;
Step4. Declare the module “Terminal pointers” in “C”
// CNTL_2P2Z terminal external references for 1st instantiation
extern int *CNTL_2P2Z_Ref1, *CNTL_2P2Z_Fdbk1, *CNTL_2P2Z_Out1;