Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

Loop flattening.

Name: Anonymous 2012-10-03 0:05


for(i=0;i<x;i++)
 for(j=0;j<y;j++)
  foo(i,j);



        xorl    %ebx, %ebx
        subl    $12, %esp
        movl    12(%ebp), %edi
        jmp     .L3
.L4:
        pushl   %eax
        pushl   %eax
        pushl   %esi
        incl    %esi
        pushl   %ebx
        call    foo
        addl    $16, %esp
        jmp     .L5
.L6:
        xorl    %esi, %esi
.L5:
        cmpl    %edi, %esi
        jl      .L4
        incl    %ebx
.L3:
        cmpl    8(%ebp), %ebx
        jl      .L6
        leal    -12(%ebp), %esp



for(i=0,j=0;i<x;i++) {
 foo(i,j);
 if(++j == y)
  j = 0;
}



        xorl    %ebx, %ebx
        movl    12(%ebp), %edi
        jmp     .L8
.L10:
        pushl   %edx
        pushl   %edx
        pushl   %ebx
        incl    %ebx
        pushl   %esi
        call    foo
        xorl    %eax, %eax
        addl    $16, %esp
        cmpl    %edi, %ebx
        setne   %al
        incl    %esi
        negl    %eax
        andl    %eax, %ebx
.L8:
        cmpl    8(%ebp), %esi
        jl      .L10

Name: Anonymous 2012-10-03 0:11

AT&T syntax
PIG DISGUSTING

Name: Anonymous 2012-10-03 0:19

Sure, it's flat, but is it Abelson flat?

Name: Anonymous 2012-10-03 0:52

DELICIOUS FLAT LOOP

the cases aren't even equivalent outside of carefully picked values for x and y

Name: Anonymous 2012-10-03 3:02

>>1
Neat!

>>2
Still better than MASM. Really.

Name: Cudder !MhMRSATORI!fR8duoqGZdD/iE5 2012-10-03 4:44


       pushl   %edx
       pushl   %edx
       pushl   %ebx
       incl    %ebx
       pushl   %esi

WTF?

Name: Anonymous 2012-10-03 9:49

Good to know.

Don't change these.
Name: Email:
Entire Thread Thread List