michas (14.07.2017 12:59, просмотров: 106) ответил Крок на Да. Мне 20 лет назад это очень понравилось, но как-то не срослось у меня с АД.
А вот из TMS320: bfir:
AMOV #COEFFS, XCDP ; Pointer to coefficient array
AMOV #(IN_DATA + N_TAPS − 1), XAR0 ; Pointer to input vector
AMOV #(IN_DATA + N_TAPS), XAR1 ; 2nd pointer to input vector
AMOV #OUT_DATA, XAR2 ; Pointer to output vector
MOV #((N_DATA − N_TAPS + 1)/2 − 1), BRC0
; Load outer loop counter
MOV #(N_TAPS − 3), CSR ; Load inner loop counter
MOV #(−(N_TAPS − 1)), T0 ; CDP rewind increment
MOV #(N_TAPS + 1), T1 ; ARx rewind increment
||RPTBLOCAL endloop ; Start the outer loop
MPY *AR0−, *CDP+, AC0 ; 1st tap
:: MPY *AR1−, *CDP+, AC1
RPT CSR ; Start the inner loop
MAC *AR0−, *CDP+, AC0 ; Inner taps
:: MAC *AR1−, *CDP+, AC1
MAC *(AR0+T1), *(CDP+T0), AC0 ; Last tap
:: MAC *(AR1+T1), *(CDP+T0), AC1
endloop:
MO