References
tfra r9,r10
tfra r15,r2
addl1a r7,r0
; r10 ->z_exp[0]
; r2->elp[0]
; r0->syndrome[0][rp[0]]
moveu.w (r0)+n0,d8
move.2w (r10)+,d10:d11
; load syndrom[1][rp[0]]
; load y0_pow=z_exp[0]
; y1_pow=z_exp[1]
move.w #(2*N+1),d0
tfr d0,d1
tfr d0,d2
loopstart2
LOOP1
[ clr d3
clr d13
nom=0,den=0
moveu.w (r0)+n0,d9
]
clr d12
doen3 #4
; load table[1][rp[i]]
[ add d8,d10,d4
add d9,d11,d5
add #1,d12
move.2w (r10)+,d10:d11 tfra r14,r2
]
; pow_n0=x0_pow+y0_pow
; pow_n1=x1_pow+y1_pow,nom=1
; load y0_pow=z_exp[2]
; y1_pow=z_exp[3],r2->elp[1]
[ min d0,d4
min d1,d5
moveu.w (r2)+n1,d7
rp[i+1]
]
moveu.w (r11)+,r7
; pow_n0=min(pow_n0,2*N+1)
; pow_n1=min(pow_n1,2*N+1)
; load y_pow=elp[1],load
falign
loopstart3
LOOP2
;1
[ add d15,d4,d4
add d8,d7,d6
moveu.b (r6),d3
eor d3,d12
moveu.w (r0)+n0,d8
x0_pow=table[j+2][rp[i]]
]
; nom^=nom
; pow_d=x0_pow+y_pow
; load bin_2_exp[pow_d]
; load
;2
[ add d15,d5,d5
eor d3,d13
;
; den=den^
min d2,d6
move.l d4,r4
moveu.w (r0)+n0,d9 ;
x1_pow=table[j+3][rp[i]]
]
; pow_d=min(pow_d,2*N+1)
; load
;3
[ add d8,d10,d4
move.l d5,r5
]
add d15,d6,d6
moveu.w (r2)+n1,d7
; pow_n0=x0_pow+y0_pow
; load y_pow=elp[j+3]
;4
Reed Solomon Encoder/Decoder on the StarCore™ SC140/SC1400 Cores, With Extended Examples, Rev. 1
Freescale Semiconductor
45