📄 aci_mras.asm
字号:
;----------------------------------------------------------------------------------
SACH *,1 ; FR2 = tmp4 = K6*wr_hat_mras (Q15)
; ARP=AR0, AR0->FR2, AR2->ualfa_mras, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #2 ; ARP=AR0, AR0->FR0, AR2->ualfa_mras, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *,AR2 ; ACC = tmp1_high
; ARP=AR0, AR0->FR0, AR2->ualfa_mras, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
ADRK #6 ; ARP=AR2, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
XOR *,AR0 ; ARP=AR2, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR0, AR0->FR3, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL * ; FR3 = sign1 (0=+,1=-) for tmp1*imalfa(k-1)
; ARP=AR0, AR0->FR3, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #3 ; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *,AR2 ; ACC = tmp1_high
; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
ADRK #2 ; ARP=AR2, AR0->FR0, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
XOR *,AR0 ; ARP=AR2, AR0->FR0, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
ADRK #4 ; ARP=AR0, AR0->FR4, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL * ; FR4 = sign2 (0=+,1=-) for tmp1*imbeta(k-1)
; ARP=AR0, AR0->FR4, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #2 ; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *,AR2 ; ACC = tmp4
; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
SBRK #2 ; ARP=AR2, AR0->FR2, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
XOR *,AR0 ; ARP=AR2, AR0->FR2, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR0, AR0->FR5, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL * ; FR5 = sign3 (0=+,1=-) for tmp4*imalfa(k-1)
; ARP=AR0, AR0->FR5, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #5 ; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *+,16 ; ACC high = tmp1_high
; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS * ; ACC low = tmp1_low
; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ABS ; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *- ; FR1 = tmp1_low = ACC low
; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH *+,AR2 ; FR0 = tmp1_high = ACC high
; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
LACC *+,16 ; ACC high = imalfa_old_high
; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS * ; ACC low = imalfa_old_low
; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ABS ; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *- ; imalfa_old_low = ACC low
; ARP=AR2, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH *+ ; imalfa_old_high = ACC high
; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LT *-,AR0 ; TREG = imalfa_old_low
; ARP=AR2, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
MPYU * ; PREG = imalfa_old_low*tmp1_low
; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADRK #5 ; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SPH * ; FR6 = tmp5 = PREG high (save parital result)
; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #6 ; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
MPYU *+,AR2 ; PREG = imalfa_old_low*tmp1_high
; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
LTP *,AR0 ; TREG = imalfa_old_high, ACC = PREG
; ARP=AR2, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
MPYU * ; PREG = imalfa_old_high*tmp1_low
; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADRK #5 ; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS * ; ACC = imalfa_old_low*tmp1_high + tmp5
; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #6 ; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
MPYA * ; ACC = ACC + PREG old, PREG new = imalfa_old_high*tmp1_high
; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADRK #6 ; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH *+ ; FR6 = tmp5 = ACC high
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SPLK #1h,* ; FR7 = tmp2_low = 1 (carry bit)
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
BCND NO_C1,NC ; Carry bit = 0 ?
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
B CHECK1 ; Branch to CHECK1 if carry bit = 1
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
NO_C1 ; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SPLK #0h,* ; FR7 = tmp2_low = 0 (no carry bit)
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
CHECK1 ; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
PAC ; ACC = imalfa_old_high*tmp1_high
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #1 ; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS *+ ; ACC = imalfa_old_high*tmp1_high + tmp5
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDH *+ ; ACC = imalfa_old_high*tmp1_high + tmp5 + tmp2_low
; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH *-,1 ; FR8 = tmp2_high = ACC high (Q31)
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *,1 ; FR7 = tmp2_low = ACC low (Q31)
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #4 ; ARP=AR0, AR0->FR3, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *- ; ACC = sign1
; ARP=AR0, AR0->FR2, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADRK #6 ; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
BCND DONE1,GT ; Check sign1 = positive ?
; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *-,16 ; ACC high = tmp2_high
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS * ; ACC low = tmp2_low
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
NEG ; Make the result negative
; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *+ ; FR7 = tmp2_low = ACC low
; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH * ; FR8 = tmp2_high = ACC high
; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
DONE1 ; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #6 ; ARP=AR0, AR0->FR2, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *+,AR2 ; ACC = tmp4
; ARP=AR0, AR0->FR3, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
ADRK #2 ; ARP=AR2, AR0->FR3, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
XOR *,AR0 ; ARP=AR2, AR0->FR3, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
SACL *- ; FR3 = sign1 (0=+,1=-) for tmp4*imbeta(k-1)
; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC * ; ACC = tmp4
; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ABS ; ACC = |tmp4|
; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *,AR2 ; FR2 = tmp4 = ACC low
; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -