int main(){}
int sum(int count)
{ int s = 0;
int i;
for(i = 0; i < count; i++) {
s+= i;
}
return s;
}
| .file "simpleLoop.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 sum
.type sum, @function
sum:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $0, -8(%ebp)
movl $0, -4(%ebp)
jmp .L4
.L5:
movl -4(%ebp), %eax
addl %eax, -8(%ebp)
addl $1, -4(%ebp)
.L4:
movl -4(%ebp), %eax
cmpl 8(%ebp), %eax
jl .L5
movl -8(%ebp), %eax
leave
ret
.size sum, .-sum
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "simpleLoop.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 sum
.ent sum
.type sum, @function
sum:
.frame $fp,24,$31 # vars= 8, regs...
.mask 0x40000000,-8
.fmask 0x00000000,0
.set noreorder
.cpload $25
.set reorder
addiu $sp,$sp,-24
sw $fp,16($sp)
move $fp,$sp
sw $4,24($fp)
sw $0,8($fp)
sw $0,12($fp)
$L3:
lw $2,12($fp)
lw $3,24($fp)
slt $2,$2,$3
beq $2,$0,$L4
lw $3,8($fp)
lw $2,12($fp)
addu $2,$3,$2
sw $2,8($fp)
lw $2,12($fp)
addiu $2,$2,1
sw $2,12($fp)
b $L3
$L4:
lw $2,8($fp)
move $sp,$fp
lw $fp,16($sp)
addiu $sp,$sp,24
j $31
.end sum
.ident "GCC: (GNU) 3.4.5"
| .file "simpleLoop.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 sum
.type sum, @function
sum:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %ecx
movl $0, %eax
testl %ecx, %ecx
jle .L6
movl $0, %eax
movl $0, %edx
.L7:
addl %edx, %eax
addl $1, %edx
cmpl %ecx, %edx
jne .L7
.L6:
popl %ebp
ret
.size sum, .-sum
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "simpleLoop.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 sum
.ent sum
.type sum, @function
sum:
.frame $sp,0,$31 # vars= 0, regs=...
.mask 0x00000000,0
.fmask 0x00000000,0
.set noreorder
.cpload $25
.set reorder
move $3,$0
.set noreorder
.set nomacro
blez $4,$L8
move $5,$0
.set macro
.set reorder
$L6:
addu $5,$5,$3
addiu $3,$3,1
slt $2,$3,$4
bne $2,$0,$L6
$L8:
.set noreorder
.set nomacro
j $31
move $2,$5
.set macro
.set reorder
.end sum
.ident "GCC: (GNU) 3.4.5"
| .file "simpleLoop.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 sum
.type sum, @function
sum:
pushl %ebp
xorl %eax, %eax
movl %esp, %ebp
movl 8(%ebp), %ecx
testl %ecx, %ecx
jle .L6
xorl %edx, %edx
.p2align 4,,7
.L7:
addl %edx, %eax
addl $1, %edx
cmpl %ecx, %edx
jne .L7
.L6:
popl %ebp
ret
.size sum, .-sum
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "simpleLoop.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 sum
.ent sum
.type sum, @function
sum:
.frame $sp,0,$31 # vars= 0, regs=...
.mask 0x00000000,0
.fmask 0x00000000,0
.set noreorder
.set nomacro
move $5,$0
blez $4,$L8
move $3,$0
$L9:
addu $5,$5,$3
addiu $3,$3,1
slt $2,$3,$4
bne $2,$0,$L9
nop
$L8:
j $31
move $2,$5
.set macro
.set reorder
.end sum
.ident "GCC: (GNU) 3.4.5"
|