Compiladores/Aula Prática 13: Difference between revisions
From Wiki**3
< Compiladores
No edit summary |
|||
Line 22: | Line 22: | ||
== Exercício 2 == | == Exercício 2 == | ||
Escreva em código Postfix ''não 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. Que optimizações poderia fazer a nível do código Postfix? | Escreva em código Postfix '''não 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. Que optimizações poderia fazer a nível do código Postfix? | ||
== Exercício 3 == | == Exercício 3 == |
Revision as of 19:44, 20 May 2016
Tópicos
Processamento semântico e geração de código Postfix. Optimização.
Exercício 1
Considere a seguinte função em C:
<c> int find(int tab[], int max, int val) {
int i; for (i = 0; i < max; i++) if (tab[i] == val) break; return i;
} </c>
- Traduza para código Postfix não optimizado a função acima.
- Identifique os blocos básicos.
- Identifique as optimizações independentes da máquina que são possíveis.
Exercício 2
Escreva em código Postfix não 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. Que optimizações poderia fazer a nível do código Postfix?
Exercício 3
Considere a seguinte função em C:
<c> int main() {
int a[10], i = 1; a[0] = 0; while (i < 10) a[i++] = a[i-1] + 2 * i - 1; return 0;
} </c>
- Traduza-a para código Postfix não optimizado a função acima.
- Identifique os blocos básicos.
- Que optimizações poderiam ser efectuadas?