Correction du format + ajout de la constante N

This commit is contained in:
Yohan Simard 2020-03-31 16:55:48 +02:00
parent 4b88d9e615
commit 181edb6831

View file

@ -1,20 +1,20 @@
thumb
AREA moncode, code, readonly
export dft
extern N
N equ 64
dft proc
push {lr, r4, r5, r0} ; empilage de l'adresse de retour
ldr r2, =TabCos ; on met l'addr de TabCos
bl cal_comp ; on calcule Re(k)
smull r4, r5, r0, r0 ; r4r5 = Re(k)² | format : 2.30
bl cal_comp ; on calcule Re(k) | format : 5.28
smull r4, r5, r0, r0 ; (r4,r5) = Re(k)² | format : 10.54
pop {r0}
ldr r2, =TabSin ; on met l'addr de TabSin
bl cal_comp ; on calcule -Im(k)
smlal r4, r5, r0, r0 ; r4r5 = Re(k)² + Im(k)² | format : 2.30
bl cal_comp ; on calcule -Im(k) | format : 5.28
smlal r4, r5, r0, r0 ; (r4,r5) = Re(k)² + Im(k)² | format : 10.54
mov r0, r5 ; On prend les 32 bits de poids fort pour revenir au format 1.15
mov r0, r5 ; On prend les 32 bits de poids fort pour convertir au format 10.22/3.29 ?
pop {pc, r4, r5} ; dépilage de l'adresse de retour
endp
@ -26,18 +26,18 @@ cal_comp proc ; r0 = x (signal), r1 = k, r2 = sin ou cos
mov r5, #0 ; r5 = ik
mov r7, #0 ; r7 = 0
deb_somme ldrh r4, [r0, r3, LSL #1] ; r4 = x[i], LSL #1 pour faire ×2 car chaque valeur est sur 2 octets
ldrsh r6, [r2, r5, LSL #1] ; r6 = cos ou sin [ik%N]
mla r7, r4, r6, r7 ; r7 += x[i] * cos/sin[ik%n]
deb_somme ldrh r4, [r0, r3, LSL #1] ; r4 = x[i], LSL #1 pour faire ×2 car chaque valeur est sur 2 octets | format 4.12
ldrsh r6, [r2, r5, LSL #1] ; r6 = cos ou sin [ik%N] | format 1.15
mla r7, r4, r6, r7 ; r7 += x[i] * cos|sin[ik%n] | format 5.27
add r5, r1 ; r5 = (i-1)k + k
and r5, #63 ; r5 = r5 % 64
and r5, #N-1 ; r5 = r5 % 64
add r3, #1 ; on incrémente i
cmp r3, #64 ; on harcode la valeur ou on utilise N ?
cmp r3, #N ;
bne deb_somme
mov r0, r7
pop {r4, r5, r6, r7}
pop {r4, r5, r6, r7}¿¿
bx lr
endp
@ -65,6 +65,7 @@ deb_somme ldrh r4, [r0, r3, LSL #1] ; r4 = x[i], LSL #1 pour faire
; pour les autres valeurs de k sauf les alias de 23 et 24 :
; M2 < 0x0000000F
TabSig
DCW 1646 ; 0 0x066e 0.40186
DCW 3006 ; 1 0x0bbe 0.73389