Tópicos

Processamento semântico e geração de código Postfix (optimizado).

Exercício 1

Considere a seguinte função em C:

int find(int tab[], int max, int val) {
int i;
for (i = 0; i < max; i++)
if (tab[i] == val)
break;
return i;
}

  1. Identifique as optimizações independentes da máquina que são possíveis.
  2. Traduza para código Postfix optimizado a função acima.
  3. Identifique os blocos básicos.

Exercício 2

Escreva em código Postfix optimizado uma função que recebe os valores dos três coeficientes de uma equação de 2º grau ( ax² + bx + c) e devolve o número de raizes.

Exercício 3

Considere a seguinte função em C:

int main() {
int a[10], i = 1;
a[0] = 0;
while (i < 10) a[i++] = a[i-1] + 2 * i - 1;
return 0;
}

  1. Identifique os blocos básicos.
  2. Que optimizações poderiam ser efectuadas?