Professional Documents
Culture Documents
TD 2
TD 2
TD 2
2
Algorithme du SAD
Reference
Frame I-1
Source
Frame I
16
x
16 Pixels
64 Pixels
16
16 Pixels
16 * 16 * 3 * 8 bits
64 Pixels
3
Étude de cas
C++ Assembleur
MVK .S 40, A2
int sad (unsigned char a[40], MVK .S 0, A4
unsigned char b[40])
{ loop: LDH .D *A5++, A0
int x; LDH .D *A6++, A1
int sum = 0;
for(x=0 ; x < 40 ; x++) SUB .S A0, A1, A3
sum += abs(a[x] - b[x]); ABS .L A3, A3
return sum; ADD .L A4, A3, A4
} SUB .L A2, 1, A2
[A2] B .S loop
4
Code ASM généré à partir du code C++ :
_sad:
MV .D1 A4, A0 ZERO .D1 A3
|| MVKH .S1 0x10000, A2
MV .S1X B4, A4 || ADD .L1X 2, B0, A1
|| MV .S2X A0, B4
L2: ; PIPED LOOP KERNEL
L1: ; PIPED LOOP PROLOG
ABS .L1 A0, A5
LDBU .D1T1 *A4++, A0 || [ B0] B .S2 L2
|| B .S2 L2 || [ A1] LDBU .D1T1 *A4++, A0
|| LDBU .D2T2 *B4++, B5 || [ A1] LDBU .D2T2 *B4++, B5
5
_sad: MV .D1 A4, A0
On est ici !
MV .S1X B4, A4
|| MV .S2X A0, B4
cycle = 1
Cycle = 2
Cycle = 4
Cycle = 5
18