Compiladores/Aula Prática 13: Difference between revisions
From Wiki**3
< Compiladores
(Created page with "== Tópicos == == Problema == == Resolução == category:Compiladores category:Ensino") |
No edit summary |
||
Line 1: | Line 1: | ||
{{TOCright}} | |||
== Tópicos == | == Tópicos == | ||
Processamento semântico e geração de código Postfix (optimizado). | |||
== | == 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> | |||
# Identifique as optimizações independentes da máquina que são possíveis. | |||
# Traduza para código Postfix optimizado a função acima. | |||
# 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: | |||
<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> | |||
# Identifique os blocos básicos. | |||
# Que optimizações poderiam ser efectuadas? | |||
== Resolução == | == Resolução == |
Revision as of 16:29, 9 February 2015
Tópicos
Processamento semântico e geração de código Postfix (optimizado).
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>
- Identifique as optimizações independentes da máquina que são possíveis.
- Traduza para código Postfix optimizado a função acima.
- 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:
<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>
- Identifique os blocos básicos.
- Que optimizações poderiam ser efectuadas?