Optimization Topics/Exercise 03: Difference between revisions

From Wiki**3

Root (talk | contribs)
Created page with "Considere a seguinte função em C: # Que optimizações independentes da máquina são possíveis? # Traduza-a para Postfix optimizado. <c> int fun(int a, int b) { int i = 10..."
 
Root (talk | contribs)
No edit summary
Line 3: Line 3:
# Traduza-a para Postfix optimizado.
# Traduza-a para Postfix optimizado.


<c>
<source lang="c">
int fun(int a, int b) {
int fun(int a, int b) {
   int i = 10, c;
   int i = 10, c;
Line 12: Line 12:
   return c;
   return c;
}
}
</c>
</source>


Instruções Postfix:
Instruções Postfix:


<text>
<source lang="text">
directivas: text data rodata bss align label extrn globl const str char id byte double
directivas: text data rodata bss align label extrn globl const str char id byte double
acesso: addr addra addrv local loca locv load load2 ldchr store store2 stchr  
acesso: addr addra addrv local loca locv load load2 ldchr store store2 stchr  
Line 23: Line 23:
bit a bit: rotl rotr shtl shtru shtrs and or not xor
bit a bit: rotl rotr shtl shtru shtrs and or not xor
funções/saltos: call ret start enter leave trash jmp jz jnz branch leap
funções/saltos: call ret start enter leave trash jmp jz jnz branch leap
</text>
</source>

Revision as of 11:56, 12 February 2019

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.
int fun(int a, int b) {
  int i = 10, c;
  c = 20 * 1024 + i;
  while (++i < a + b) {
    if (a + b < 3 * i + 5) c += 2 * i;
  }
  return c;
}

Instruções Postfix:

directivas: text data rodata bss align label extrn globl const str char id byte double
acesso: addr addra addrv local loca locv load load2 ldchr store store2 stchr 
          alloc dup swap push pop int sp
aritmética/lógica: add dadd sub dsub mul dmul div ddiv mod neg gt ge lt le eq ne cmp
bit a bit: rotl rotr shtl shtru shtrs and or not xor
funções/saltos: call ret start enter leave trash jmp jz jnz branch leap