Difference between revisions of "Compiladores/Aula Prática 13"

From Wiki**3

< Compiladores
(Created page with "== Tópicos == == Problema == == Resolução == category:Compiladores category:Ensino")
 
Line 1: Line 1:
 +
{{TOCright}}
 
== Tópicos ==
 
== Tópicos ==
 +
Processamento semântico e geração de código Postfix (optimizado).
  
== Problema ==
+
== 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 18: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>

  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:

<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. Identifique os blocos básicos.
  2. Que optimizações poderiam ser efectuadas?

Resolução