?? search_2i40.asm
字號:
*****************************************************************************
** Description: search_2i40() in c2_9pf.c **
** **
** Inputs **
** **
** al ---Word16 subNr **
** xar3---Word16 dn[] **
** xar4---Word16 rr[] **
** **
** Outputs: **
** **
** xar2---Word16 codvec[] **
** **
** **
** Return value : none **
** **
** Attribute : Cycles:24066 Pm: 121 **
** Modified Registers: all **
** **
** Programmer : Qi Ying **
*****************************************************************************
.global startpos
.global _search_2i40
_search_2i40:
addb sp, #19
mov *-sp[2], #-1 ;*-sp[2]=psk
mov *-sp[3], #1 ;*-sp[3]=alpk
mov *+xar2[0], #0
mov *+xar2[1], #1 ;codvec[i]=i
mpy p, al, #2 ;pl=subNR*2
movl xar6, #startpos
movl acc, xar6
add acc, pl
movl *-sp[5], acc ;*-sp[5]=startpos[subNR*2]
mov ar5, #0 ;ar5=track1
_Loop_202:
cmp ar5, #2
sb _Line_274, GEQ
mpy acc, ar5, #8 ;8*track1
addl acc, *-sp[5] ;startPos[subNr*2+8*track1]
movl xar6, acc
movz ar0, *xar6 ;ar0=ipos[0]
addb xar6, #1
movz ar1, *xar6
mov *-sp[11], ar1 ;*-sp[11]=ipos[1]
_Loop_214:
cmp ar0, #40 ;ar0=i0
sb _Line_272, GEQ
mpy acc, ar0, #40
add al, ar0 ;al=i0*40+i0
mov ar1, al ;ar1=i0*40+i0
mov T, ar0
inc T
mpy acc, T, ar0 ;al=i*(i+1)
lsr al, #1 ;al=i*(i+1)/2
sub ar1, al ;ar1=i*40+i-i*(i+1)/2
mpy acc, *+xar4[ar1], #8192
lsl acc, #1
movl *-sp[8], acc ;*-sp[8]=alp0
mov al, *+xar3[ar0]
mov *-sp[10], al ;*-sp[10]=ps0
mov *-sp[12], #-1 ;*-sp[12]=sq
mov *-sp[13], #1 ;*-sp[13]=alp
mov al, *-sp[11]
mov *-sp[14], al ;*-sp[14]=ix
mov *-sp[15], ar0 ;*-sp[15]=i0
movz ar1, *-sp[11] ;ar1=i1
_Loop_236:
cmp ar1, #40
sb _Line_262, GEQ
mov al, *-sp[10] ;ps0
add al, *+xar3[ar1] ;al=ps1
mov T, al
mpy acc, T, al ;ps1*ps1
lsl acc, #1
mov *-sp[16], ah ;*-sp[16]=sq1
mpy acc, ar1, #40
add al, ar1 ;al=i1*40+i1
mov ar0, al ;ar0=i1*40+i1
mov T, ar1
inc T
mpy acc, T, ar1 ;al=i1*(i1+1)
lsr al, #1 ;al=i1*(i1+1)/2
sub ar0, al ;ar0=i1*40+i1-i1*(i1+1)/2
mpy acc, *+xar4[ar0], #8192
lsl acc, #1
movl xar6, *-sp[8] ;alp0
addl xar6, acc ;xar6=alp1
mov al, *-sp[15] ;al=i0
cmp al, ar1 ;比較i0與i1
sb _Line_242, GEQ
mpy acc, al, #40
add al, ar1 ;al=i0*40+i1
mov ar0, al ;ar0=i0*40+i1
mov T, *-sp[15]
inc T
mpy acc, T, *-sp[15] ;al=i0*(i0+1)
lsr al, #1 ;al=i0*(i0+1)/2
sub ar0, al ;ar0=i0*40+i1-i0*(i0+1)/2
sb _line_mac, UNC
_Line_242:
mpy acc, ar1, #40
add al, *-sp[15] ;al=i1*40+i0
mov ar0, al ;ar0=i1*40+i0
mov T, ar1
inc T
mpy acc, T, ar1 ;al=i1*(i1+1)
lsr al, #1 ;al=i1*(i1+1)/2
sub ar0, al ;ar0=i1*40+i0-i1*(i1+1)/2
_line_mac:
mpy acc, *+xar4[ar0], #16384
lsl acc, #1
addl acc, xar6 ;acc=alp1
add acc, #0x0800 << #4
mov ar6, ah ;ar6=alp_16
mov T, *-sp[12] ;sq
mpy p, T, ar6 ;sq*alp_16
mov T, *-sp[13] ;alp
mpy acc, T, *-sp[16] ;alp*sq1
subl acc, p
lsl acc, #1 ;acc=s
movb xar7, #0
cmpl acc, xar7
sb _Line_256, LEQ
mov al, *-sp[16]
mov *-sp[12], al ;sq=sq1
mov *-sp[13], ar6 ;alp=alp_16
mov *-sp[14], ar1 ;ix=i1
_Line_256:
addb xar1, #5 ;i1+5
sb _Loop_236, UNC
_Line_262:
movz ar0, *-sp[15] ;ar0=i0
mov T, *-sp[2] ;psk
mpy p, T, *-sp[13] ;alp*psk
mov T, *-sp[3] ;alpk
mpy acc, T, *-sp[12] ;alpk*sq
subl acc, p
lsl acc, #1 ;acc=s
cmpl acc, xar7 ;比較s與0
sb _Line_271, LEQ
mov al, *-sp[12]
mov *-sp[2], al ;psk=sq
mov al, *-sp[13]
mov *-sp[3], al ;alpk=alp
mov *+xar2[0], ar0 ;codvec[0] = i0
mov al, *-sp[14]
mov *+xar2[1], al ;codvec[1] = ix
_Line_271:
addb xar0, #5 ;i0+5
sb _Loop_214, UNC
_Line_272:
inc ar5 ;track1++
sb _Loop_202, UNC
_Line_274:
subb sp, #19
LRETR
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -