int main(){}
int foo(int count)
{
int s = 0;
s += s;
if (count)
{
int k[count];
s+= k[0];
} else {
int k = 4;
s+= k;
}
return s;
}
| .file "frame_pointer.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.globl foo
.type foo, @function
foo:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
movl $0, -8(%ebp)
movl -8(%ebp), %eax
addl %eax, -8(%ebp)
cmpl $0, 8(%ebp)
je .L4
movl %esp, %eax
movl %eax, %edx
movl 8(%ebp), %eax
sall $2, %eax
addl $15, %eax
addl $15, %eax
shrl $4, %eax
sall $4, %eax
subl %eax, %esp
movl %esp, -20(%ebp)
movl -20(%ebp), %eax
addl $15, %eax
shrl $4, %eax
sall $4, %eax
movl %eax, -20(%ebp)
movl -20(%ebp), %eax
movl %eax, -12(%ebp)
movl -12(%ebp), %eax
movl (%eax), %eax
addl %eax, -8(%ebp)
movl %edx, %esp
jmp .L6
.L4:
movl $4, -4(%ebp)
movl -4(%ebp), %eax
addl %eax, -8(%ebp)
.L6:
movl -8(%ebp), %eax
leave
ret
.size foo, .-foo
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "frame_pointer.c"
.section .mdebug.abi32
.previous
.abicalls
.text
.align 2
.globl main
.ent main
.type main, @function
main:
.frame $fp,8,$31 # vars= 0, regs=...
.mask 0x40000000,-8
.fmask 0x00000000,0
.set noreorder
.cpload $25
.set reorder
addiu $sp,$sp,-8
sw $fp,0($sp)
move $fp,$sp
move $sp,$fp
lw $fp,0($sp)
addiu $sp,$sp,8
j $31
.end main
.align 2
.globl foo
.ent foo
.type foo, @function
foo:
.frame $fp,40,$31 # vars= 8, regs...
.mask 0x40000000,-8
.fmask 0x00000000,0
.set noreorder
.cpload $25
.set reorder
addiu $sp,$sp,-40
sw $fp,32($sp)
move $fp,$sp
sw $4,40($fp)
sw $0,8($fp)
lw $3,8($fp)
lw $2,8($fp)
addu $2,$3,$2
sw $2,8($fp)
lw $2,40($fp)
beq $2,$0,$L3
move $4,$sp
lw $2,40($fp)
sll $2,$2,2
addiu $2,$2,7
addiu $2,$2,7
srl $2,$2,3
sll $2,$2,3
subu $sp,$sp,$2
move $2,$sp
addiu $2,$2,7
srl $2,$2,3
sll $2,$2,3
lw $3,8($fp)
lw $2,0($2)
addu $2,$3,$2
sw $2,8($fp)
move $sp,$4
b $L4
$L3:
li $2,4 # 0x4
sw $2,12($fp)
lw $3,8($fp)
lw $2,12($fp)
addu $2,$3,$2
sw $2,8($fp)
$L4:
lw $2,8($fp)
move $sp,$fp
lw $fp,32($sp)
addiu $sp,$sp,40
j $31
.end foo
.ident "GCC: (GNU) 3.4.5"
| .file "frame_pointer.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.globl foo
.type foo, @function
foo:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl 8(%ebp), %edx
movl $4, %ecx
testl %edx, %edx
je .L6
movl %esp, %eax
leal 30(,%edx,4), %edx
andl $-16, %edx
subl %edx, %esp
leal 15(%esp), %edx
andl $-16, %edx
movl (%edx), %ecx
movl %eax, %esp
.L6:
movl %ecx, %eax
leave
ret
.size foo, .-foo
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "frame_pointer.c"
.section .mdebug.abi32
.previous
.abicalls
.text
.align 2
.globl main
.ent main
.type main, @function
main:
.frame $sp,0,$31 # vars= 0, regs=...
.mask 0x00000000,0
.fmask 0x00000000,0
.set noreorder
.cpload $25
.set reorder
j $31
.end main
.align 2
.globl foo
.ent foo
.type foo, @function
foo:
.frame $fp,24,$31 # vars= 0, regs...
.mask 0x40000000,-8
.fmask 0x00000000,0
.set noreorder
.cpload $25
.set reorder
addiu $sp,$sp,-24
sw $fp,16($sp)
move $fp,$sp
move $2,$0
.set noreorder
.set nomacro
beq $4,$0,$L4
addiu $2,$2,4
.set macro
.set reorder
move $3,$sp
sll $2,$4,2
addiu $2,$2,14
srl $2,$2,3
sll $2,$2,3
subu $sp,$sp,$2
lw $2,0($sp)
move $sp,$3
$L4:
move $sp,$fp
lw $fp,16($sp)
.set noreorder
.set nomacro
j $31
addiu $sp,$sp,24
.set macro
.set reorder
.end foo
.ident "GCC: (GNU) 3.4.5"
| .file "frame_pointer.c"
.text
.p2align 4,,15
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.p2align 4,,15
.globl foo
.type foo, @function
foo:
pushl %ebp
movl $4, %ecx
movl %esp, %ebp
subl $8, %esp
movl 8(%ebp), %edx
testl %edx, %edx
je .L6
leal 30(,%edx,4), %edx
movl %esp, %eax
andl $-16, %edx
subl %edx, %esp
leal 15(%esp), %edx
andl $-16, %edx
movl (%edx), %ecx
movl %eax, %esp
.L6:
leave
movl %ecx, %eax
ret
.size foo, .-foo
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "frame_pointer.c"
.section .mdebug.abi32
.previous
.abicalls
.text
.align 2
.globl main
.ent main
.type main, @function
main:
.frame $sp,0,$31 # vars= 0, regs=...
.mask 0x00000000,0
.fmask 0x00000000,0
.set noreorder
.set nomacro
j $31
nop
.set macro
.set reorder
.end main
.align 2
.globl foo
.ent foo
.type foo, @function
foo:
.frame $fp,24,$31 # vars= 0, regs...
.mask 0x40000000,-8
.fmask 0x00000000,0
.set noreorder
.set nomacro
sll $6,$4,2
addiu $3,$6,14
addiu $sp,$sp,-24
srl $2,$3,3
sw $fp,16($sp)
move $5,$sp
move $fp,$sp
sll $2,$2,3
beq $4,$0,$L4
li $3,4 # 0x4
subu $sp,$sp,$2
lw $3,0($sp)
move $sp,$5
$L4:
move $sp,$fp
lw $fp,16($sp)
move $2,$3
j $31
addiu $sp,$sp,24
.set macro
.set reorder
.end foo
.ident "GCC: (GNU) 3.4.5"
|