Considere o programa C abaixo:
#include <stdio.h>
int foo1 (int a[], int tam);
int calcula (int a[], int tam) {
int i = 0;
int acc = 0;
for (i=0; i<tam; i++)
acc += a[i];
return acc;
}
int foo (int a[], int tam) {
int i;
int b[tam];
for (i = 0; i<tam; i++)
b[i] = calcula (&(a[i]), tam-i);
return calcula (b, tam);
}
int main (void) {
int i;
int a[4];
for (i=0;i<4;i++) {
printf ("valor de a[%d]? ",i);
scanf ("%d", &a[i]);
}
printf ("foo(a) = %d\nfoo1(a) == %d\n", foo(a,4), foo1(a,4));
return 0;
}
Implemente a função foo1 em assembly (em outro arquivo).
Essa função deve ser a tradução mais direta possível
da função foo.
Teste o programa!