Compiladores/Aula Prática 13: Difference between revisions

From Wiki**3

< Compiladores
No edit summary
No edit summary
Line 1: Line 1:
{{TOCright}}
{{TOCright}}
== Tópicos ==
== Tópicos ==
Processamento semântico e geração de código Postfix (optimizado).
Processamento semântico e geração de código Postfix. Optimização.


== Exercício 1 ==
== Exercício 1 ==
Line 16: Line 16:
</c>
</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.
# 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 ==
== 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.
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 ==
Line 37: Line 37:
</c>
</c>


# Traduza-a para código Postfix '''não optimizado''' a função acima.
# Identifique os blocos básicos.
# Identifique os blocos básicos.
# Que optimizações poderiam ser efectuadas?
# Que optimizações poderiam ser efectuadas?

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>

  1. Traduza para código Postfix não optimizado a função acima.
  2. Identifique os blocos básicos.
  3. 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>

  1. Traduza-a para código Postfix não optimizado a função acima.
  2. Identifique os blocos básicos.
  3. Que optimizações poderiam ser efectuadas?

Resolução