INF1018 - Software Básico
Aulas de Laboratório
Laboratório 10 - Exercício extra
Considere o programa C abaixo:
#include <stdio.h>
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 foo1 (int a[], int tam) {
return foo (a, 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;
}
-
Troque a função foo1 por uma função foo1 escrita em assembly (em outro arquivo),
cuja implementação seja a tradução de foo para assembly.
-
Agora escreva a main em assembly.
(a função main
é como outra função qualquer!)