int f(int x, int y)
{
int m;
m = max(x,y);
return m * m;
}
f:
pushl %ebp
movl %esp, %ebp
subl $8, %esp ; make the stack 8 byte bigger
movl 12(%ebp), %eax ; parameter y is at 12(%ebp)
movl %eax, 4(%esp) ; move y to 4 bytes below stack top
movl 8(%ebp), %eax ; parameter x is at 8(%ebp)
movl %eax, (%esp) ; move x to the stack top
call max ; call max, the return value will be in %eax
leave ; restore the stack top to its old value
imull %eax, %eax ; R[%eax] = R[%eax] * R[%eax]
ret ; return value in %eax