int bubblesort(int *a, int *b, int len) { int i,j; for(i=0; i < len; i++) for(j=0; j < (len-1); j++) if (a[j] > b[j+1]) { int t; t = a[j]; a[j] = b[j+1]; b[j] = t; } } ------------------------------------- # Cc1 defaults: # -mgas -mgpOPT # Cc1 arguments (-G value = 8, Cpu = default, ISA = 1): # -quiet -dumpbase -o gcc2_compiled.: __gnu_compiled_c: .text .align 2 .globl bubblesort .text .loc 1 3 .ent bubblesort bubblesort: .frame $fp,24,$31 # vars= 16, regs= 1/0, args= 0, extra= 0 .mask 0x40000000,-8 .fmask 0x00000000,0 subu $sp,$sp,24 sw $fp,16($sp) move $fp,$sp sw $4,24($fp) sw $5,28($fp) sw $6,32($fp) sw $0,0($fp) # i = 0 $L2: lw $2,0($fp) # $2 = i lw $3,32($fp) # $3 = len slt $2,$2,$3 # compare goto L3 if i >= len bne $2,$0,$L5 j $L3 $L5: .set noreorder nop .set reorder sw $0,4($fp) # j = 0 $L6: lw $3,32($fp) # $3 = len subu $2,$3,1 # $2 = len -1 lw $3,4($fp) # $3 = j slt $2,$3,$2 # if j < len-1 goto L9 bne $2,$0,$L9 j $L7 # goto L7 $L9: lw $2,4($fp) # $2 = j move $3,$2 # $3 = j sll $2,$3,2 # a is an int array lw $3,24($fp) # $3 = a[j] addu $2,$2,$3 lw $3,4($fp) move $4,$3 sll $3,$4,2 lw $4,28($fp) addu $3,$3,$4 addu $4,$3,4 lw $2,0($2) lw $3,0($4) slt $2,$3,$2 beq $2,$0,$L10 lw $2,4($fp) move $3,$2 sll $2,$3,2 lw $3,24($fp) addu $2,$2,$3 lw $3,0($2) sw $3,8($fp) lw $2,4($fp) move $3,$2 sll $2,$3,2 lw $3,24($fp) addu $2,$2,$3 lw $3,4($fp) move $4,$3 sll $3,$4,2 lw $4,28($fp) addu $3,$3,$4 addu $4,$3,4 lw $3,0($4) sw $3,0($2) lw $2,4($fp) move $3,$2 sll $2,$3,2 lw $3,28($fp) addu $2,$2,$3 lw $3,8($fp) sw $3,0($2) $L10: $L8: lw $3,4($fp) addu $2,$3,1 move $3,$2 sw $3,4($fp) j $L6 $L7: $L4: lw $3,0($fp) addu $2,$3,1 move $3,$2 sw $3,0($fp) j $L2 $L3: $L1: move $sp,$fp # sp not trusted here lw $fp,16($sp) addu $sp,$sp,24 j $31 .end bubblesort --------------------------------- # Cc1 defaults: # -mgas -mgpOPT # Cc1 arguments (-G value = 8, Cpu = default, ISA = 1): # -quiet -dumpbase -O4 -o gcc2_compiled.: __gnu_compiled_c: .text .align 2 .globl bubblesort .text .loc 1 3 .ent bubblesort bubblesort: .frame $sp,16,$31 # vars= 16, regs= 0/0, args= 0, extra= 0 .mask 0x00000000,0 .fmask 0x00000000,0 subu $sp,$sp,16 move $11,$0 blez $6,$L15 subu $13,$6,1 $L17: move $10,$0 blez $13,$L16 subu $12,$6,1 move $9,$5 move $8,$4 $L21: .set noreorder lw $7,0($8) .set reorder .set noreorder lw $3,4($9) #nop .set reorder slt $2,$3,$7 beq $2,$0,$L20 sw $3,0($8) sw $7,0($9) $L20: addu $9,$9,4 addu $8,$8,4 addu $10,$10,1 slt $2,$10,$12 bne $2,$0,$L21 $L16: addu $11,$11,1 slt $2,$11,$6 bne $2,$0,$L17 $L15: addu $sp,$sp,16 j $31 .end bubblesort