?? pred_lt_3or6.asm
字號:
*****************************************************************************
** Description: Pred_lt_3or6() in pred_lt.c **
** **
** Inputs **
** **
** ar7---Word16 T0 **
** ar6---Word16 frac **
** xar0---Word16 exc[] **
** **
** Outputs: **
** **
** xar0---Word16 exc[] **
** **
** **
** Return value : none **
** **
** Attribute : Cycles: 48120 Pm: 78 **
** Modified Registers: all **
** **
** Programmer : Qi Ying **
*****************************************************************************
.global inter_6_1
.global _Pred_lt_3or6
.ref UP_SAMP_MAX
.ref _buffer1
_Pred_lt_3or6:
movl acc, xar0
sub acc, ar7
movl p, acc ;p= &exc[-T0] p--*x0
mov ah, ar6 ;ar6= frac
neg ah
mov ar6, ah ;negate (frac)
mov al, ar6
lsl al, #1 ;frac 即ar6左移一位
mov ar6, al
cmp ar6, #0
sb _Line_116, GEQ ;if frac>=0,跳轉L116
mov al, ar6
addb al, #6
mov ar6, al
movl acc, p
subb acc, #1
movl p, acc ;x0--
_Line_116:
movl xar7, #inter_6_1
mov acc, #0
add acc, ar6
addl xar7, acc ;xar7--*c1 &inter_6_1[frac]
mov acc, #6
sub acc, ar6
movl xar2, #inter_6_1
addl xar2, acc ;xar2--*c2 &inter_6_1[sub (UP_SAMP_MAX, frac)]
mov ar4, #39
;movl xar5, P ;xar5--*x1
_Loop_116:
movl acc, P
add acc, #1
movl P, acc ;x1=x0++
movl xar5, P ;xar5--*x1+1
movl xar6, p ;xar6--*x2
push P
movb xar1, #0 ;xar1--k
zapa ;acc = 0,p = 0,ovc = 0
mov ar3, #9 ;循環次數10
_Loop_124:
mov t, *--xar5 ;xar5--,t = *xar5 = x1[-i]
mpya p, t, *+xar7[ar1] ;acc = acc +p<<pm,p = x1[-i] * c1[k]
mov t, *xar6++
mpya p, t, *+xar2[ar1] ;acc = acc +p<<pm,p = x2[i] * c2[k]
addb xar1, #UP_SAMP_MAX ;k += UP_SAMP_MAX
banz _Loop_124, ar3--
addl acc, p<<pm ;s = acc = acc + p<<pm ;p始終等于x0
** push p
** movb ah, #0 ;p不能放立即數
** movl p, acc ;ph--k--0
** mov ar3, #9 ;循環次數10
**_Loop_124:
** mov T, *xar5 ;T--x1[-i]
** subb xar5, #1
** movb acc, #0
** mov al, ph ;k
** addl xar7, acc ;xar7--&c1[k]
**
** movb acc, #0
** mpy acc, T, *xar7 ;x1[-i]*c1[k]
** addl xar2, acc ;長加乘,放回s
** movl acc, xar7
** sub acc, ph
** movl xar7, acc ;xar7重新指回c1
**
** mov T, *xar6++ ;T--x2[i]
** movb acc, #0
** mov al, ph ;k
** addl xar1, acc ;xar1--&c2[k]
** movb acc, #0
** mpy acc, T, *xar1 ;x2[i]*c2[k]
** addl xar2, acc ;長加乘,放回s
** movl acc, xar1
** sub acc, ph
** movl xar1, acc ;xar1重新指回c2
** movb al, #0
** movb ah, #6
** addul p, acc ;ph+6
** banz _Loop_124, ar3--
** pop p
** movl acc, xar2
**** lsl acc, #1
add acc, #0x0800<<#4 ;round(s)=ah
mov T, ah ;round(s)=T
mov *xar0++, T ;exc[j]
pop P
banz _Loop_116, ar4--
subb xar0, #40 ;xar0重新指回_buffer1
LRETR
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -