previous | start | next

Optimized Version

void init(int n, int a[n])
{
  int i;
  for(i = 0; i < n; i++) {
    a[i] = 5;
  }
}

Optimized code generated (uses scaled index for the array element):

( gcc -O2 -S init.c)

init:
        pushl   %ebp
        movl    %esp, %ebp
        movl    8(%ebp), %ecx   ; %ecx:  n
        movl    12(%ebp), %edx  ; %edx:  address(a[0])
        testl   %ecx, %ecx      ;
        jle     .L5             ; if (n <= 0) goto L5
        xorl    %eax, %eax      ; %eax: i = 0
.L4:
        movl    $5, (%edx,%eax,4) ; a[i] = 5
        addl    $1, %eax        ; i++
        cmpl    %ecx, %eax      ;
        jne     .L4             ; if (i != n) goto L4
.L5:
        popl    %ebp
        ret
      
   


previous | start | next