L31A206: MOVL *SP++,ACC
MOVL ACC,*-SP[0x06]
CSB ACC
LSLL ACC,T
MOVL @XAR4,ACC
LSR AH,#0x6
SBF L31A247,EQ
MOVZ AR0,@AH
MOVL XAR7,#0x3FE412
MOVB AH,#0x31
SUBR @TH,AH
MOVL XAR5,@XT
MOVL XT,*+XAR7[AR0]
MOVL XAR7,#0x3FE502
MOVL XAR6,*XAR7++
IMPYL P,XT,@XAR4 ;
QMPYL ACC,XT,@XAR4
LSL64 ACC:P,#0x1
SUBL ACC,@XAR6
NEG ACC
IMPYL P,XT,@ACC
QMPYL ACC,XT,@ACC
LSL64 ACC:P,#0x3
MOVL XT,@ACC
IMPYL P,XT,@XAR4
QMPYL ACC,XT,@XAR4
LSL64 ACC:P,#0x1
SUBL ACC,@XAR6
NEG ACC
IMPYL P,XT,@ACC
QMPYL ACC,XT,@ACC
LSL64 ACC:P,#0x3
MOVL XT,*–SP
IMPYL P,XT,@ACC
QMPYL ACC,XT,@ACC
LSL64 ACC:P,#0x2
MOVL XT,@XAR5
ASR64 ACC:P,T
ADDUL P,*XAR7++
ADDCL ACC,*XAR7++
MINL ACC,*+XAR7[2]
MINCUL P,*+XAR7[0]
MAXL ACC,*+XAR7[6]
MAXCUL P,*+XAR7[4]
ASR64 ACC:P,#0x1
MOVL ACC,@P
LRETR
上面为 L31A206函数中的代码,从代码中变量看只有第一行MOVL *SP++,ACC 中ACC,在调用这个函数时已经计算好,其他的变量均在函数内部完成赋值。调用
完这个函数均是取这个函数中执行完结果的ACC值赋值到其他变量,有以下几点疑问
1、这个函数时大概是完成什么用的?
2、看了有很多地方调用,均计算好了第一行MOVL *SP++,ACC 中的ACC,如果理解为一个函数的传人变量ACC的话,那么后
面第二行 MOVL ACC,*-SP[0x06] 中不明白*-SP[0x06] 是多少,因为整个函数的变量都能在函数中完成赋值,不需要其他的传人,那么MOVL ACC,*-SP[0x06] 中和
第一行MOVL *SP++,ACC有什么关联吗,否则整个函数在多处被调用,如何实现得到不同的值 ?
jianxing ding:
回复 Hongbin Zhao:
多谢,非常感谢!