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.