Difference between revisions of "Optimization Topics/Exercise 08"

From Wiki**3

< Optimization Topics
(Created page with "{{TOCright}} == Problema == Considere a seguinte função em C: # Que optimizações independentes da máquina são possíveis? # Traduza-a para Postfix optimizado. <source...")
 
(Problema)
Line 8: Line 8:
 
<source lang="c">
 
<source lang="c">
 
double *fun(double *a, double *b) {
 
double *fun(double *a, double *b) {
   double *c = (double *)malloc(2 * 8), i, j;
+
   double *c = (double *)malloc(2 * 8);
 
   int i;
 
   int i;
 
   for (i = 0; i < (len < 2 ? len : 2); i++)
 
   for (i = 0; i < (len < 2 ? len : 2); i++)

Revision as of 14:50, 12 June 2023

Problema

Considere a seguinte função em C:

  1. Que optimizações independentes da máquina são possíveis?
  2. Traduza-a para Postfix optimizado.
double *fun(double *a, double *b) {
  double *c = (double *)malloc(2 * 8);
  int i;
  for (i = 0; i < (len < 2 ? len : 2); i++)
    c[i] = a[i] + b[i];
  return c;
}

Código Postfix (não optimizado)

O código Postfix correspondente ao código C é o seguinte (agradece-se a comunicação de questões relativas a este código).

Código Postfix

Compiling and Running

Para compilar o código Postfix directamente, pode ser utilizada a ferramenta pf2asm (assumindo uma arquitectura Intel de 32 bits -- ix86):

pf2asm code.pf
yasm -felf32 code.asm