Mips

From Ellcc

Jump to: navigation, search

Assembly generated by sieve.c:

./mips-elf-ecc -v -O5 -S test/sieve.c
        .text
        .align  2
        .globl  main
        .ent    main
        .type   main, @function
main:
        .frame  $sp,32,$ra
        .mask   0x80040000,-8
        .fmask  0x00000000,0

        .set noreorder
        .cpload $25
        .set reorder

        addiu $sp, $sp, -32
        sw $ra, 24($sp)
        .cprestore 16

        sw $16, 20($sp)
        lw $2, %got(str)($gp)
        nop
        addiu $4, $2, %lo(str)
        lw $25, %call16(puts)($gp)
        nop
        jalr $25
        nop
        lw $2, 16($sp)
        nop
        addiu $3, $zero, 0
        addu $gp, $zero, $2
        j $BB1_11       # body2.outer
        nop

$BB1_1: # next
        lw $3, %got(.str1)($gp)
        nop
        addiu $4, $3, %lo(.str1)
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str3)($gp)
        nop
        lw $2, %got(.str2)($gp)
        nop
        addiu $4, $2, %lo(.str2)
        addiu $5, $3, %lo(.str3)
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str4)($gp)
        nop
        addiu $4, $3, %lo(.str4)
        addiu $5, $zero, 44
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str6)($gp)
        nop
        lw $2, %got(.str5)($gp)
        nop
        addiu $4, $2, %lo(.str5)
        addiu $5, $3, %lo(.str6)
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str8)($gp)
        nop
        lw $2, %got(.str7)($gp)
        nop
        addiu $4, $2, %lo(.str7)
        addiu $5, $3, %lo(.str8)
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str9)($gp)
        nop
        addiu $4, $3, %lo(.str9)
        addiu $16, $zero, 0
        addu $5, $zero, $16
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str10)($gp)
        nop
        addiu $4, $3, %lo(.str10)
        addiu $5, $zero, 1
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str11)($gp)
        nop
        addiu $4, $3, %lo(.str11)
        addu $5, $zero, $16
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str13)($gp)
        nop
        lw $2, %got(.str12)($gp)
        nop
        addiu $4, $2, %lo(.str12)
        addiu $5, $3, %lo(.str13)
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        lw $3, %got(.str15)($gp)
        nop
        lw $2, %got(.str14)($gp)
        nop
        addiu $4, $2, %lo(.str14)
        addiu $5, $3, %lo(.str15)
        lw $25, %call16(printf)($gp)
        nop
        jalr $25
        nop
        lw $3, 16($sp)
        nop
        addu $gp, $zero, $3
        addu $2, $zero, $16
        lw $16, 20($sp)
        nop
        lw $ra, 24($sp)
        nop
        addiu $sp, $sp, 32
        jr $ra
        nop

$BB1_2: # body2
        addiu $5, $2, 1
        addiu $6, $zero, 1
        addu $2, $4, $2
        sb $6, 0($2)
        addiu $6, $zero, 8191
        addu $2, $zero, $5
        bne $5, $6, $BB1_2      # body2
        nop

$BB1_3: # body6.preheader
        lw $2, %got(flags)($gp)
        nop
        addiu $4, $zero, 0
        addiu $6, $zero, 3
        addu $7, $zero, $6
        addu $5, $zero, $4

$BB1_4: # body6
        addu $8, $2, $4
        lbu $8, 0($8)
        nop
        beq $8, $zero, $BB1_9   # next9
        nop

$BB1_5: # ifTrue
        addiu $8, $zero, 8190
        sub $8, $6, $8
        bgtz $8, $BB1_8 # next12
        nop

$BB1_6: # bb.nph
        lw $8, %got(flags)($gp)
        nop
        addu $9, $zero, $6

$BB1_7: # body11
        addu $10, $7, $9
        addu $9, $8, $9
        sb $zero, 0($9)
        slti $11, $10, 8191
        addu $9, $zero, $10
        bne $11, $zero, $BB1_7  # body11
        nop

$BB1_8: # next12
        addiu $5, $5, 1

$BB1_9: # next9
        addiu $6, $6, 3
        addiu $7, $7, 2
        addiu $4, $4, 1
        addiu $8, $zero, 8191
        bne $4, $8, $BB1_4      # body6
        nop

$BB1_10:        # next8
        addiu $3, $3, 1
        addiu $2, $zero, 10000
        beq $3, $2, $BB1_1      # next
        nop

$BB1_11:        # body2.outer
        lw $4, %got(flags)($gp)
        nop
        addiu $2, $zero, 0
        j $BB1_2        # body2
        nop

        .end    main


        .globl  flags
        .section        .bss
        .align 4
        .type flags,@object
        .size flags,8191
flags:
        .space  8191


        .rdata
        .align 0
        .type .str1,@object
        .size .str1,11
.str1:
        .asciz  "%d primes\n"


        .align 0
        .type .str2,@object
        .size .str2,15
.str2:
        .asciz  "__FILE__ = %s\n"


        .align 0
        .type .str3,@object
        .size .str3,13
.str3:
        .asciz  "test/sieve.c"


        .align 0
        .type .str4,@object
        .size .str4,15
.str4:
        .asciz  "__LINE__ = %d\n"


        .align 0
        .type .str5,@object
        .size .str5,15
.str5:
        .asciz  "__DATE__ = %s\n"


        .align 0
        .type .str6,@object
        .size .str6,12
.str6:
        .asciz  "Jul 12 2008"


        .align 0
        .type .str7,@object
        .size .str7,15
.str7:
        .asciz  "__TIME__ = %s\n"


        .align 0
        .type .str8,@object
        .size .str8,9
.str8:
        .asciz  "06:04:21"


        .align 0
        .type .str9,@object
        .size .str9,16
.str9:
        .asciz  "__ELLCC__ = %d\n"


        .align 4
        .type .str10,@object
        .size .str10,22
.str10:
        .asciz  "__ELLCC_MINOR__ = %d\n"


        .align 4
        .type .str11,@object
        .size .str11,27
.str11:
        .asciz  "__ELLCC_PATCHLEVEL__ = %d\n"


        .align 4
        .type .str12,@object
        .size .str12,31
.str12:
        .asciz  "__ELLCC_VERSION_STRING__ = %s\n"


        .align 0
        .type .str13,@object
        .size .str13,6
.str13:
        .asciz  "0.1.0"


        .align 4
        .type .str14,@object
        .size .str14,25
.str14:
        .asciz  "__ELLCC_VERSIONG__ = %s\n"


        .align 4
        .type .str15,@object
        .size .str15,24
.str15:
        .asciz  "0.1.0 ALPHA Jul 11 2008"


        .align 4
        .type str,@object
        .size str,17
str:
        .asciz  "10000 iterations"
Personal tools