novonum abaixo em assembly.
int novonum(void) {
int minhalocal;
printf("numero: ");
scanf("%d",&minhalocal);
return minhalocal;
}
Teste sua função com a main mostrada abaixo:
#include <stdio.h>
int novonum(void);
int main (void) {
printf ("%d\n", novonum());
return 0;
}
ex2.c com o código abaixo, compile-o e
o execute, verificando seu resultado.
#include <stdio.h>
int addl (int a[], int n) {
int i;
int s = 0;
for (i=0; i<n; i++)
s += a[i];
return s;
}
int bemboba (int num) {
int local[4];
int *a;
int i;
for (i=0,a=local;i<4;i++) {
*a = num;
a++;
}
return addl (local, 4);
}
int main (void) {
printf ("%d\n", bemboba (5));
return 0;
}
Traduza agora a função bemboba para assembly,
criando um arquivo bemboba.s.
Lembre-se que você não precisa alocar na pilha todas as variáveis locais, apenas as que não podem ser alocadas em registradores...
Substitua em ex2.c a função bemboba por seu
protótipo, e crie um novo executável ex2, que reune
os dois módulos:
gcc -Wall -o ex2 ex2.c bemboba.s
Teste o seu novo programa, comparando seu resultado com o obtido anteriormente.