INF1018 - Software Básico

Instruções de Ponto Flutuante (extra)

Crie um arquivo com o programa abaixo, compile-o e o execute, verificando seu resultado.

#include <stdio.h>

void foo (int a[], double b[], int n) {
  int *pint;
  double *pdouble;

  for (pint = a, pdouble = b; n-- ; pint++, pdouble++) {
    *pdouble = (double)*pint * 2.0;
  }
}

double boo (double v) {
  int a1[4] = {1,2,3,4};
  double a2[4];
  int i;

  foo(a1, a2, 4);
  for (i = 0; i < 4; i++)
    v += a2[i];
  return v;
}

int main() {
  printf("%f\n",boo(1.0));
  return 0;
}
  1. Traduza a função foo para assembly. Verifique se o novo programa produz o mesmo resultado que o anterior.
  2. Traduza agora a função boo e verifique o resultado do novo programa.
Atenção: não deixe de desenhar a pilha ao elaborar a sua solução!