C code x86 asm MIPS asm x86 asm -O1 MIPS asm -O1 x86 asm -O4 MIPS asm -O4
int main(){}
long long int array[10][10];

int sum(int x, int count) 
{
     int s = 0;
     long long int i;
     for(i = 0; i < count; i++) {
	  s+= array[x][i];
     }
     return s;
}
	.file	"nestLoop.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	%ebx
	subl	$28, %esp
	movl	$0, -20(%ebp)
	movl	$0, -16(%ebp)
	movl	$0, -12(%ebp)
	jmp	.L4
.L5:
	movl	8(%ebp), %ebx
	movl	-16(%ebp), %edx
	movl	-12(%ebp), %ecx
	movl	%ebx, %eax
	sall	$2, %eax
	addl	%ebx, %eax
	addl	%eax, %eax
	addl	%edx, %eax
	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)
.L4:
	movl	12(%ebp), %eax
	movl	%eax, -32(%ebp)
	movl	%eax, %edx
	sarl	$31, %edx
	movl	%edx, -28(%ebp)
	movl	-28(%ebp), %eax
	cmpl	-12(%ebp), %eax
	jg	.L5
	movl	-28(%ebp), %edx
	cmpl	-12(%ebp), %edx
	jl	.L7
	movl	-32(%ebp), %eax
	cmpl	-16(%ebp), %eax
	ja	.L5
.L7:
	movl	-20(%ebp), %eax
	addl	$28, %esp
	popl	%ebx
	popl	%ebp
	ret
	.size	sum, .-sum
	.comm	array,800,32
	.ident	"GCC: (GNU) 4.1.2 20080704 ...
	.section	.note.GNU-stack,"",@progb...
	.file	1 "nestLoop.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,40($fp)
	move	$2,$3
	sll	$2,$2,2
	addu	$2,$2,$3
	sll	$3,$2,1
	lw	$2,16($fp)
	addu	$2,$3,$2
	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,800,8
	.ident	"GCC: (GNU) 3.4.5"
	.file	"nestLoop.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	8(%ebp), %ecx
	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:
	leal	(%ecx,%ecx,4), %eax
	sall	$4, %eax
	addl	$array, %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	$8, -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,800,32
	.ident	"GCC: (GNU) 4.1.2 20080704 ...
	.section	.note.GNU-stack,"",@progb...
	.file	1 "nestLoop.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
	sra	$10,$5,31
	la	$11,array
	sll	$2,$4,2
	addu	$2,$2,$4
	.set	noreorder
	.set	nomacro
	b	$L3
	sll	$4,$2,1
	.set	macro
	.set	reorder

$L7:
	addu	$2,$4,$8
$L8:
	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
	addu	$2,$4,$8
	.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,800,8
	.ident	"GCC: (GNU) 3.4.5"
	.file	"nestLoop.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	8(%ebp), %ecx
	movl	%esi, %edx
	sarl	$31, %edx
	cmpl	$0, %edx
	jle	.L12
.L4:
	leal	(%ecx,%ecx,4), %eax
	movl	%esi, %edi
	sall	$4, %eax
	xorl	%ecx, %ecx
	addl	$array, %eax
	xorl	%ebx, %ebx
	movl	%eax, -16(%ebp)
	sarl	$31, %edi
	movl	$0, -20(%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	$8, -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,800,32
	.ident	"GCC: (GNU) 4.1.2 20080704 ...
	.section	.note.GNU-stack,"",@progb...
	.file	1 "nestLoop.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
	
	sll	$3,$4,2
	addu	$2,$3,$4
	sll	$12,$2,1
	move	$10,$0
	move	$8,$0
	move	$9,$0
	lw	$13,%got(array)($28)
	b	$L3
	sra	$11,$5,31

$L9:
	beq	$3,$0,$L4
	nop

$L7:
	lw	$6,0($4)
	addiu	$8,$8,1
	sltu	$4,$8,1
	addu	$9,$9,$4
	addu	$10,$10,$6
$L3:
	addu	$24,$12,$8
	sll	$7,$24,3
	slt	$14,$9,$11
	addu	$4,$7,$13
	bne	$14,$0,$L7
	sltu	$3,$8,$5

	beq	$11,$9,$L9
	nop

$L4:
	j	$31
	move	$2,$10

	.set	macro
	.set	reorder
	.end	sum

	.comm	array,800,8
	.ident	"GCC: (GNU) 3.4.5"