Considere o arquivo abaixo:
.text .global add add: push %ebp mov %esp, %ebp mov 8(%ebp), %eax add 12(%ebp), %eax mov %ebp, %esp pop %ebp retEsse arquivo define uma função
add,
equivalente a definição em C
int add (int a, int b) { return a+b; }
Escreva, 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 programas juntos
(algo como gcc -Wall -m32 -o lab7 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.
Escreva, em assembler, uma função len,
que retorne o comprimento de uma dada string.
(Lembre-se que o parâmetro, uma string,
é o endereço de uma sequência de caracteres na memória.)
Modifique sua main para testar essa nova função.
Escreva, em assembler, uma função add1,
equivalente à função C abaixo:
int add1 (int *a, int n) {
int i;
int s = 0;
for (i=0; i<n; i++) s += a[i];
return s;
}
Modifique sua main para testar essa nova função.
Escreva, em assembler, uma função add1,
equivalente à função C abaixo:
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.