#include <stdio.h> void swap (int* x, int* y); int main (void) { int a, b; printf ("valor de a? "); scanf ("%d", &a); printf ("valor de b? "); scanf ("%d", &b); swap (&a, &b); printf ("a = %d\nb = %d\n", a, b); return 0; }Teste sua função main com a implementação de swap, em C, dada a seguir:
void swap (int* x, int* y) { int z; z=*x; *x=*y; *y= z; }
f
, com a definição abaixo, em assembly.
Teste-a com a função main
dada, escrita em C.
#include <stdio.h> #include <stdlib.h> #define MAX 4 int f (int a[], int b[]){ int local [MAX]; int i, acc; for (i=0;i<MAX;i++) local[i] = a[i]+b[i]; acc = 1; for (i=0; i<MAX; i++) acc = acc*local[i]; return acc; } int main (void) { int um[MAX], outro[MAX], i; for (i=0;i<MAX;i++) { printf ("valor de um[%d]? ",i); scanf ("%d", &um[i]); } for (i=0;i<MAX;i++) { printf ("valor de outro[%d]? ",i); scanf ("%d", &outro[i]); } printf ("resultado de f: %d\n", f(um, outro)); return 0; }
calcula
e foo
em assembly. (Comece codificando apenas calcula
, teste
com o resto em C, e depois codifique foo
)
#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 main (void) { int a[4] = {1, 1, 1, 1}; printf ("%d\n", foo(a,4)); return 0; }