int main(){}
long long int array[5][5];
int sum(int x, int count)
{
int s = 0;
long long int i;
for(i = 0; i < count; i++) {
s+= array[i][x];
}
return s;
}
| .file "nestLoop2.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 $24, %esp
movl $0, -12(%ebp)
movl $0, -8(%ebp)
movl $0, -4(%ebp)
jmp .L4
.L5:
movl -8(%ebp), %eax
movl -4(%ebp), %edx
movl 8(%ebp), %ecx
movl %eax, %edx
movl %edx, %eax
sall $2, %eax
addl %edx, %eax
addl %ecx, %eax
movl array+4(,%eax,8), %edx
movl array(,%eax,8), %eax
movl %eax, %edx
movl -12(%ebp), %eax
leal (%edx,%eax), %eax
movl %eax, -12(%ebp)
addl $1, -8(%ebp)
adcl $0, -4(%ebp)
.L4:
movl 12(%ebp), %eax
movl %eax, -24(%ebp)
movl %eax, %edx
sarl $31, %edx
movl %edx, -20(%ebp)
movl -20(%ebp), %eax
cmpl -4(%ebp), %eax
jg .L5
movl -20(%ebp), %edx
cmpl -4(%ebp), %edx
jl .L7
movl -24(%ebp), %eax
cmpl -8(%ebp), %eax
ja .L5
.L7:
movl -12(%ebp), %eax
leave
ret
.size sum, .-sum
.comm array,200,32
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "nestLoop2.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,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 $5,44($fp)
sw $0,8($fp)
move $2,$0
move $3,$0
sw $2,16($fp)
sw $3,20($fp)
$L3:
lw $2,44($fp)
sra $2,$2,31
lw $3,44($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,$L6
lw $2,20($fp)
lw $3,28($fp)
bne $2,$3,$L4
lw $2,16($fp)
lw $3,24($fp)
sltu $2,$2,$3
bne $2,$0,$L6
b $L4
$L6:
la $4,array
lw $3,16($fp)
move $2,$3
sll $2,$2,2
addu $2,$2,$3
lw $3,40($fp)
addu $2,$2,$3
sll $2,$2,3
addu $2,$2,$4
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 $L3
$L4:
lw $2,8($fp)
move $sp,$fp
lw $fp,32($sp)
addiu $sp,$sp,40
j $31
.end sum
.comm array,200,8
.ident "GCC: (GNU) 3.4.5"
| .file "nestLoop2.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
pushl %edi
pushl %esi
pushl %ebx
subl $8, %esp
movl 12(%ebp), %esi
movl %esi, %edx
sarl $31, %edx
testl %edx, %edx
jg .L4
testl %edx, %edx
js .L6
cmpl $0, %esi
ja .L4
.L6:
movl $0, -20(%ebp)
.p2align 4,,5
jmp .L7
.L4:
movl 8(%ebp), %eax
leal array(,%eax,8), %eax
movl %eax, -16(%ebp)
movl $0, -20(%ebp)
movl $0, %ecx
movl $0, %ebx
movl %esi, %edi
sarl $31, %edi
.L8:
movl -16(%ebp), %eax
movl (%eax), %eax
addl %eax, -20(%ebp)
addl $1, %ecx
adcl $0, %ebx
addl $40, -16(%ebp)
movl %ebx, %edx
xorl %edi, %edx
movl %ecx, %eax
xorl %esi, %eax
orl %eax, %edx
jne .L8
.L7:
movl -20(%ebp), %eax
addl $8, %esp
popl %ebx
popl %esi
popl %edi
popl %ebp
ret
.size sum, .-sum
.comm array,200,32
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "nestLoop2.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
move $8,$0
move $9,$0
la $11,array
.set noreorder
.set nomacro
b $L3
sra $10,$5,31
.set macro
.set reorder
$L7:
sll $2,$8,2
$L8:
addu $2,$2,$8
addu $2,$2,$4
sll $2,$2,3
addu $2,$2,$11
lw $2,0($2)
addu $3,$3,$2
addiu $8,$8,1
sltu $2,$8,1
addu $9,$9,$2
$L3:
slt $2,$9,$10
.set noreorder
.set nomacro
bne $2,$0,$L8
sll $2,$8,2
.set macro
.set reorder
bne $10,$9,$L4
sltu $2,$8,$5
bne $2,$0,$L7
$L4:
.set noreorder
.set nomacro
j $31
move $2,$3
.set macro
.set reorder
.end sum
.comm array,200,8
.ident "GCC: (GNU) 3.4.5"
| .file "nestLoop2.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
movl %esp, %ebp
pushl %edi
pushl %esi
pushl %ebx
subl $8, %esp
movl 12(%ebp), %esi
movl %esi, %edx
sarl $31, %edx
cmpl $0, %edx
jle .L12
.L4:
movl 8(%ebp), %eax
movl %esi, %edi
xorl %ecx, %ecx
movl $0, -20(%ebp)
xorl %ebx, %ebx
sarl $31, %edi
leal array(,%eax,8), %eax
movl %eax, -16(%ebp)
.p2align 4,,7
.L8:
movl -16(%ebp), %eax
movl (%eax), %eax
addl %eax, -20(%ebp)
addl $1, %ecx
adcl $0, %ebx
movl %ecx, %eax
movl %ebx, %edx
xorl %esi, %eax
xorl %edi, %edx
addl $40, -16(%ebp)
orl %eax, %edx
jne .L8
movl -20(%ebp), %eax
addl $8, %esp
popl %ebx
popl %esi
popl %edi
popl %ebp
ret
.L12:
jl .L6
cmpl $0, %esi
.p2align 4,,2
ja .L4
.L6:
movl $0, -20(%ebp)
movl -20(%ebp), %eax
addl $8, %esp
popl %ebx
popl %esi
popl %edi
popl %ebp
ret
.size sum, .-sum
.comm array,200,32
.ident "GCC: (GNU) 4.1.2 20080704 ...
.section .note.GNU-stack,"",@progb...
| .file 1 "nestLoop2.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
.cpload $25
.set nomacro
move $11,$0
move $8,$0
move $9,$0
lw $13,%got(array)($28)
b $L3
sra $12,$5,31
$L9:
beq $3,$0,$L4
nop
$L7:
lw $2,0($10)
addiu $8,$8,1
sltu $3,$8,1
addu $9,$9,$3
addu $11,$11,$2
$L3:
sll $24,$8,2
addu $15,$24,$8
addu $10,$15,$4
sll $7,$10,3
slt $6,$9,$12
addu $10,$7,$13
bne $6,$0,$L7
sltu $3,$8,$5
beq $12,$9,$L9
nop
$L4:
j $31
move $2,$11
.set macro
.set reorder
.end sum
.comm array,200,8
.ident "GCC: (GNU) 3.4.5"
|