Mips
From Ellcc
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"
