Traduza para assembly a função add
a seguir, criando um arquivo
add.s
.
int add (int a, int b) { return a+b; }
Escreva agora, em C, uma função main
que chame essa
função add
. Por exemplo,
#include <stdio.h> int add (int a, int b); int main (void) { printf("%d\n", add(4,5)); return 0; }Compile os dois arquivos juntos (algo como
gcc -Wall -m32 -o prog add.s main.c
;
o gcc
se encarrega de ligá-los) e execute o resultado.
Modifique a função para retornar a soma de três parâmetros int
.
Modifique sua main
para testar a nova função.
Traduza para assembler a função C add1
mostrada abaixo:
int add1 (int *a, int n) { int i; int s = 0; for (i=0; i<n; i++) s += *a++; return s; }Modifique sua
main
para testar essa nova função.
Traduza para assembler a função C foo
mostrada abaixo.
(A sua tradução deverá representar a indexação do array
a
!)
void foo (int a[], int n) { int i; int s = 0; for (i=0; i<n; i++) { s += a[i]; if (a[i] == 0) { a[i] = s; s = 0; } } }Modifique sua
main
para testar essa nova função.
Codifique a função fat
, com a definição abaixo, em assembly.
Teste-a com uma função main
escrita em C.
int fat (int n) { if (n==0) return 1; else return n*fat(n-1); }