Você está na página 1de 2

Wissal Ben MASSOUD

2GT3

2ème Exemple : SAD

Code C Code Assembleur


int sad ( unsigned char a[40], unsigned char MVK.S1 40, A2
b[40] )
||MVK.S2 0, A4
{
loop: LDH .D1 *A5++, A0
int x;
|| LDH .D *B6++, B1
int sum=0;
SUB .L1 A2, 1, A2
for(x=0; x < 40; x++)
[A2] B .S2 loop
sum = sum + abs(a[x] - b[x]);
NOP 2
return sum;
SUB .S1X A0, B1, A3
}
ABS .L1 A3,A5

ADD .S1 A4, A5, A4


MVK.S 40, A2
STH .D1 A4, *A7
MVK.S 0, A4

loop: LDH .D *A5++, A0 322 CYCLES


LDH .D *B6++, B1

NOP 4

SUB .S A0, A1, A3

ABS .L A3,A5

ADD .S A4, A5, A4

SUB .L A2,1,A2

[A2] B .S loop

NOP 5

STH .D A4, *A7

643 cycles
1
3ème Exemple : Interpolation

Code C Code Assembleur

MVK.S 39, A0
void interpolation ( char a[40] , short
b[39] ) loop: LDH .D *A1++, A2

{ LDH .D *A1++, A3

int x; NOP 4

for(x=0 ; x < 39 ; x++) ADD .S A2, A3, A4

b[x] = ( a[x] + a[x+1] + 1 ) / 2 ; ADD .S A4, 1, A4

} SHR .S A4,1,A4

SUB .L A0,1,A0

[A0] B .S loop
MVK.S 39, A0
NOP 5
loop: LDH .D1 *A1++, A2
STH .D A4,*A5
||LDH .D2 *A1++, A3

SUB .L1 A0,1,A0


626 CYCLES
NOP

[A0] B .S1 loop

NOP

ADD .S1 A2, A3, A4

ADD .S1 A4, 1, A4

SHR .S1 A4,1,A4

STH .D1 A4,*A5++

352 CYCLES

Você também pode gostar