(Created page with "== Tópicos == == Problema == == Resolução == category:Compiladores category:Ensino") |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | {{TOCright}} | ||
== Tópicos == | == Tópicos == | ||
+ | Processamento semântico e geração de código Postfix. Optimização. | ||
− | == | + | == Exercício 1 == |
+ | Considere a seguinte função em C: | ||
+ | |||
+ | <source lang="c"> | ||
+ | int find(int tab[], int max, int val) { | ||
+ | int i; | ||
+ | for (i = 0; i < max; i++) | ||
+ | if (tab[i] == val) | ||
+ | break; | ||
+ | return i; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | # 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: | ||
+ | |||
+ | <source lang="c"> | ||
+ | int main() { | ||
+ | int a[10], i = 1; | ||
+ | a[0] = 0; | ||
+ | while (i < 10) a[i++] = a[i-1] + 2 * i - 1; | ||
+ | return 0; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | # Traduza-a para código Postfix '''não optimizado''' a função acima. | ||
+ | # Identifique os blocos básicos. | ||
+ | # Que optimizações poderiam ser efectuadas? | ||
== Resolução == | == Resolução == |
Contents[hide] |
Processamento semântico e geração de código Postfix. Optimização.
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;
}
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?
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;
}