65 lines
No EOL
1.1 KiB
ArmAsm
65 lines
No EOL
1.1 KiB
ArmAsm
; ce programme est pour l'assembleur RealView (Keil)
|
|
thumb
|
|
area moncode, code, readonly
|
|
export calcul_dft_moitie
|
|
export calcul_dft
|
|
import TabCos
|
|
import TabSin
|
|
import TabSig
|
|
;
|
|
|
|
|
|
calcul_dft proc
|
|
push {lr}
|
|
|
|
;push {r1}
|
|
|
|
ldr r2, =TabCos
|
|
bl calcul_dft_moitie ;recuperation Re(k) dans r0
|
|
|
|
;pop {r1}
|
|
|
|
;push {r0} ;mise de Re(k) dans la pile
|
|
|
|
;ldr r2, =TabSin
|
|
;bl calcul_dft_moitie ;mise de -Im(k) dans r0
|
|
|
|
;mul r0, r0, r0 ;(-Im(k))²
|
|
|
|
;pop {r1} ;mise de Re(k) dans r1
|
|
;mul r1, r1, r1 ;Re(k)²
|
|
;add r0, r0, r1 ;addition de Re(k)² + Im(k)²
|
|
pop {lr}
|
|
bx lr
|
|
endp
|
|
|
|
calcul_dft_moitie proc
|
|
push {lr,r4-r6}
|
|
|
|
|
|
mov r4, r0
|
|
mov r5, r2
|
|
mov r6, r1
|
|
|
|
mov r3, #0 ;i=0 dans r3
|
|
mov r0, #0 ;resultat de la somme dans r0
|
|
boucle ldrh r2, [r4, r3, LSL #1] ;chargement de x(i)
|
|
|
|
mul r1, r3, r6 ;multiplication ik dans r1
|
|
and r1, r1, #63 ;modulo de ik par 64
|
|
|
|
ldrh r1, [r5, r1, LSL #1] ;chargement de cos(ik..)
|
|
mul r1, r1, r2 ;multiplication x(i)cos(ik..)
|
|
add r0, r0, r1 ;ajout dans la somme
|
|
add r3, #1 ;incrementation de i
|
|
cmp r3, #64 ;test de i
|
|
bne boucle
|
|
beq sortie
|
|
|
|
sortie
|
|
|
|
pop {lr,r4-r6}
|
|
bx lr
|
|
endp
|
|
|
|
end |