long long int array[10];
int main(int count)
{
int s = 0;
long long int i;
for(i = 0; i < count; i++) {
s+= array[i];
}
return s;
}
| .file "arrayLoop2.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
subl $36, %esp
movl %ecx, -36(%ebp)
movl $0, -20(%ebp)
movl $0, -16(%ebp)
movl $0, -12(%ebp)
jmp .L2
.L3:
movl -16(%ebp), %eax
movl -12(%ebp), %edx
movl array+4(,%eax,8), %edx
movl array(,%eax,8), %eax
movl %eax, %edx
movl -20(%ebp), %eax
leal (%edx,%eax), %eax
movl %eax, -20(%ebp)
addl $1, -16(%ebp)
adcl $0, -12(%ebp)
.L2:
movl -36(%ebp), %edx
movl (%edx), %eax
movl %eax, -32(%ebp)
movl %eax, %edx
sarl $31, %edx
movl %edx, -28(%ebp)
movl -28(%ebp), %eax
cmpl -12(%ebp), %eax
jg .L3
movl -28(%ebp), %edx
cmpl -12(%ebp), %edx
jl .L5
movl -32(%ebp), %eax
cmpl -16(%ebp), %eax
ja .L3
.L5:
movl -20(%ebp), %eax
addl $36, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.comm array,80,32
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "arrayLoop2.c"
.section .mdebug.abi32
.previous
.abicalls
.text
.align 2
.globl main
.ent main
.type main, @function
main:
.frame $fp,40,$31 # vars= 24, reg...
.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)
move $2,$0
move $3,$0
sw $2,16($fp)
sw $3,20($fp)
$L2:
lw $2,40($fp)
sra $2,$2,31
lw $3,40($fp)
sw $3,24($fp)
sw $2,28($fp)
lw $2,24($fp)
lw $3,28($fp)
sw $2,24($fp)
sw $3,28($fp)
lw $2,20($fp)
lw $3,28($fp)
slt $2,$2,$3
bne $2,$0,$L5
lw $2,20($fp)
lw $3,28($fp)
bne $2,$3,$L3
lw $2,16($fp)
lw $3,24($fp)
sltu $2,$2,$3
bne $2,$0,$L5
b $L3
$L5:
la $3,array
lw $2,16($fp)
sll $2,$2,3
addu $2,$2,$3
lw $3,8($fp)
lw $2,0($2)
addu $2,$3,$2
sw $2,8($fp)
lw $2,16($fp)
lw $3,20($fp)
addiu $2,$2,1
sltu $4,$2,1
addu $3,$3,$4
sw $2,16($fp)
sw $3,20($fp)
b $L2
$L3:
lw $2,8($fp)
move $sp,$fp
lw $fp,32($sp)
addiu $sp,$sp,40
j $31
.end main
.comm array,80,8
.ident "GCC: (GNU) 3.4.5"
| .file "arrayLoop2.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %edi
pushl %esi
pushl %ebx
pushl %ecx
subl $4, %esp
movl (%ecx), %esi
movl %esi, %edx
sarl $31, %edx
testl %edx, %edx
jg .L2
testl %edx, %edx
js .L4
cmpl $0, %esi
ja .L2
.L4:
movl $0, -20(%ebp)
.p2align 4,,5
jmp .L5
.L2:
movl $0, -20(%ebp)
movl $0, %ecx
movl $0, %ebx
movl %esi, %edi
sarl $31, %edi
.L6:
leal 0(,%ecx,8), %eax
movl array(%eax), %edx
addl %edx, -20(%ebp)
addl $1, %ecx
adcl $0, %ebx
movl %ebx, %edx
xorl %edi, %edx
movl %ecx, %eax
xorl %esi, %eax
orl %eax, %edx
jne .L6
.L5:
movl -20(%ebp), %eax
addl $4, %esp
popl %ecx
popl %ebx
popl %esi
popl %edi
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.comm array,80,32
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "arrayLoop2.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
move $3,$0
move $8,$0
move $9,$0
la $10,array
.set noreorder
.set nomacro
b $L2
sra $5,$4,31
.set macro
.set reorder
$L6:
sll $2,$8,3
$L7:
addu $2,$2,$10
lw $2,0($2)
addu $3,$3,$2
addiu $8,$8,1
sltu $2,$8,1
addu $9,$9,$2
$L2:
slt $2,$9,$5
.set noreorder
.set nomacro
bne $2,$0,$L7
sll $2,$8,3
.set macro
.set reorder
bne $5,$9,$L3
sltu $2,$8,$4
bne $2,$0,$L6
$L3:
.set noreorder
.set nomacro
j $31
move $2,$3
.set macro
.set reorder
.end main
.comm array,80,8
.ident "GCC: (GNU) 3.4.5"
| .file "arrayLoop2.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 %edi
pushl %esi
pushl %ebx
pushl %ecx
subl $4, %esp
movl (%ecx), %esi
movl %esi, %edx
sarl $31, %edx
cmpl $0, %edx
jle .L10
.L2:
movl %esi, %edi
xorl %ecx, %ecx
movl $0, -20(%ebp)
xorl %ebx, %ebx
sarl $31, %edi
.p2align 4,,7
.L6:
leal 0(,%ecx,8), %eax
movl array(%eax), %edx
addl %edx, -20(%ebp)
addl $1, %ecx
adcl $0, %ebx
movl %ecx, %eax
movl %ebx, %edx
xorl %esi, %eax
xorl %edi, %edx
orl %eax, %edx
jne .L6
movl -20(%ebp), %eax
addl $4, %esp
popl %ecx
popl %ebx
popl %esi
popl %edi
popl %ebp
leal -4(%ecx), %esp
ret
.L10:
jl .L4
cmpl $0, %esi
ja .L2
.L4:
movl $0, -20(%ebp)
movl -20(%ebp), %eax
addl $4, %esp
popl %ecx
popl %ebx
popl %esi
popl %edi
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.comm array,80,32
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "arrayLoop2.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 nomacro
move $10,$0
move $8,$0
move $9,$0
lw $12,%got(array)($28)
b $L2
sra $11,$4,31
$L8:
beq $3,$0,$L3
nop
$L6:
lw $2,0($5)
addiu $8,$8,1
sltu $3,$8,1
addu $9,$9,$3
addu $10,$10,$2
$L2:
sll $7,$8,3
slt $6,$9,$11
addu $5,$7,$12
bne $6,$0,$L6
sltu $3,$8,$4
beq $11,$9,$L8
nop
$L3:
j $31
move $2,$10
.set macro
.set reorder
.end main
.comm array,80,8
.ident "GCC: (GNU) 3.4.5"
|