Code:
.file "fu1.c"
.global .rem
.section ".rodata"
.align 8
.LLC0:
.asciz "\nThis program prints the Fibonacci sequence"
.align 8
.LLC1:
.asciz "\nEnter a limit on the largest number to be displayed: "
.align 8
.LLC2:
.asciz "%d"
.align 8
.LLC3:
.asciz "\n%d "
.align 8
.LLC4:
.asciz "%d "
.align 8
.LLC5:
.asciz "\nThe last number %d is disvisible by %d.\n"
.align 8
.LLC6:
.asciz "\nDo you want to print a different sequence (y/n):"
.align 8
.LLC7:
.asciz " %c"
.align 8
.LLC8:
.asciz "pause"
.section ".text"
.align 4
.global main
.type main, #function
.proc 04
main:
!#PROLOGUE# 0
save %sp, -152, %sp
!#PROLOGUE# 1
.LL2:
mov 1, %g1
st %g1, [%fp-32]
mov 1, %g1
st %g1, [%fp-36]
sethi %hi(.LLC0), %g1
or %g1, %lo(.LLC0), %o0
call printf, 0
nop
sethi %hi(.LLC1), %g1
or %g1, %lo(.LLC1), %o0
call printf, 0
nop
add %fp, -20, %o5
sethi %hi(.LLC2), %g1
or %g1, %lo(.LLC2), %o0
mov %o5, %o1
call scanf, 0
nop
sethi %hi(.LLC3), %g1
or %g1, %lo(.LLC3), %o0
ld [%fp-32], %o1
call printf, 0
nop
.LL5:
sethi %hi(.LLC4), %g1
or %g1, %lo(.LLC4), %o0
ld [%fp-36], %o1
call printf, 0
nop
ld [%fp-32], %o5
ld [%fp-36], %g1
add %o5, %g1, %g1
st %g1, [%fp-24]
ld [%fp-36], %g1
st %g1, [%fp-32]
ld [%fp-24], %g1
st %g1, [%fp-36]
ld [%fp-24], %o5
ld [%fp-20], %g1
cmp %o5, %g1
bg .LL6
nop
b .LL5
nop
.LL6:
st %g0, [%fp-44]
ld [%fp-32], %g1
st %g1, [%fp-48]
mov 2, %g1
st %g1, [%fp-52]
mov 1, %g1
st %g1, [%fp-40]
.LL8:
ld [%fp-48], %g1
mov %g1, %o0
ld [%fp-40], %o1
call .rem, 0
nop
mov %o0, %g1
cmp %g1, 0
bne .LL9
nop
ld [%fp-40], %o5
ld [%fp-48], %g1
cmp %o5, %g1
bg .LL9
nop
ld [%fp-40], %g1
st %g1, [%fp-44]
ld [%fp-40], %g1
add %g1, %g1, %g1
st %g1, [%fp-40]
b .LL8
nop
.LL9:
sethi %hi(.LLC5), %g1
or %g1, %lo(.LLC5), %o0
ld [%fp-48], %o1
ld [%fp-44], %o2
call printf, 0
nop
sethi %hi(.LLC6), %g1
or %g1, %lo(.LLC6), %o0
call printf, 0
nop
add %fp, -25, %o5
sethi %hi(.LLC7), %g1
or %g1, %lo(.LLC7), %o0
mov %o5, %o1
call scanf, 0
nop
ldub [%fp-25], %g1
sll %g1, 24, %g1
sra %g1, 24, %g1
cmp %g1, 110
be .LL3
nop
b .LL2
nop
.LL3:
sethi %hi(.LLC8), %g1
or %g1, %lo(.LLC8), %o0
call system, 0
nop
mov 0, %g1
mov %g1, %i0
ret
restore
.size main, .-main