I need it done with this specific WinMips64 program(I shared it on my google dri
ID: 3864616 • Letter: I
Question
I need it done with this specific WinMips64 program(I shared it on my google drive below):
1) https://drive.google.com/open?id=0B-yy0y1yM_P0TjM3bzU1cHRmeFk
OR
2) https://drive.google.com/drive/folders/0B-yy0y1yM_P0VTJWd2NvYlNYdEE?usp=sharing
If you could share the code(in a from of a copiable text) from your created "xxxx.s" file it would be great!
P.S. "xxxx.s" files can be edited with Notepad program. I use Notepad++ for easier spacing.
Write a WinMIPS64 code to determine whether a given number is an Armstrong number. The digit numbers equal to sum of nth powers of their digits (a finite sequence), called Armstrong numbers. They first few are given by 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748,.... For example, consider 371, 371 33 73+ 13 27 343 1 371. A sample C code for your assistance is given below: includeExplanation / Answer
.LC0:
.ascii "Enter an integer: "
.LC1:
.ascii "%d"
.LC2:
.ascii "%d is an Armstrong number."
.LC3:
.ascii "%d is not an Armstrong number."
main:
daddiu $sp,$sp,-64
sd $31,56($sp)
sd $fp,48($sp)
sd $28,40($sp)
move $fp,$sp
lui $28,%hi(%neg(%gp_rel(main)))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(main)))
ld $2,%got_disp(__stack_chk_guard)($28)
ld $2,0($2)
sd $2,24($fp)
sw $0,12($fp)
sw $0,16($fp)
ld $2,%got_page(.LC0)($28)
daddiu $4,$2,%got_ofst(.LC0)
ld $2,%call16(printf)($28)
move $25,$2
1: jalr $25
nop
daddiu $2,$fp,4
move $5,$2
ld $2,%got_page(.LC1)($28)
daddiu $4,$2,%got_ofst(.LC1)
ld $2,%call16(scanf)($28)
move $25,$2
1: jalr $25
nop
lw $2,4($fp)
sw $2,8($fp)
.L3:
lw $2,8($fp)
beq $2,$0,.L2
nop
lw $5,8($fp)
move $4,$5
move $3,$4
dsll $2,$3,1
move $3,$2
dsll $2,$3,2
dsubu $2,$2,$3
dsll $3,$2,4
daddu $2,$2,$3
dsll $3,$2,8
daddu $2,$2,$3
dsll $3,$2,16
daddu $2,$2,$3
daddu $2,$2,$4
dsrl $2,$2,32
sll $2,$2,0
sra $3,$2,2
sra $2,$5,31
subu $2,$3,$2
sw $2,8($fp)
lw $2,16($fp)
addiu $2,$2,1
sw $2,16($fp)
b .L3
nop
.L2:
lw $2,4($fp)
sw $2,8($fp)
.L5:
lw $2,8($fp)
beq $2,$0,.L4
nop
lw $4,8($fp)
move $5,$4
move $3,$5
dsll $2,$3,1
move $3,$2
dsll $2,$3,2
dsubu $2,$2,$3
dsll $3,$2,4
daddu $2,$2,$3
dsll $3,$2,8
daddu $2,$2,$3
dsll $3,$2,16
daddu $2,$2,$3
daddu $2,$2,$5
dsrl $2,$2,32
sll $2,$2,0
sra $3,$2,2
sra $2,$4,31
subu $2,$3,$2
sll $2,$2,1
sll $3,$2,2
addu $2,$2,$3
subu $2,$4,$2
sw $2,20($fp)
lw $2,20($fp)
mtc1 $2,$f0
cvt.d.w $f0,$f0
lw $2,16($fp)
mtc1 $2,$f1
cvt.d.w $f1,$f1
mov.d $f13,$f1
mov.d $f12,$f0
ld $2,%call16(pow)($28)
move $25,$2
1: jalr $25
nop
mov.d $f1,$f0
lw $2,12($fp)
mtc1 $2,$f0
cvt.d.w $f0,$f0
add.d $f0,$f0,$f1
trunc.w.d $f0,$f0
mfc1 $2,$f0
sw $2,12($fp)
lw $5,8($fp)
move $4,$5
move $3,$4
dsll $2,$3,1
move $3,$2
dsll $2,$3,2
dsubu $2,$2,$3
dsll $3,$2,4
daddu $2,$2,$3
dsll $3,$2,8
daddu $2,$2,$3
dsll $3,$2,16
daddu $2,$2,$3
daddu $2,$2,$4
dsrl $2,$2,32
sll $2,$2,0
sra $3,$2,2
sra $2,$5,31
subu $2,$3,$2
sw $2,8($fp)
b .L5
nop
.L4:
lw $3,4($fp)
lw $2,12($fp)
bne $2,$3,.L6
nop
lw $2,4($fp)
move $5,$2
ld $2,%got_page(.LC2)($28)
daddiu $4,$2,%got_ofst(.LC2)
ld $2,%call16(printf)($28)
move $25,$2
1: jalr $25
nop
b .L7
nop
.L6:
lw $2,4($fp)
move $5,$2
ld $2,%got_page(.LC3)($28)
daddiu $4,$2,%got_ofst(.LC3)
ld $2,%call16(printf)($28)
move $25,$2
1: jalr $25
nop
.L7:
move $2,$0
ld $3,%got_disp(__stack_chk_guard)($28)
ld $4,24($fp)
ld $3,0($3)
beq $4,$3,.L9
nop
ld $2,%call16(__stack_chk_fail)($28)
move $25,$2
1: jalr $25
nop
.L9:
move $sp,$fp
ld $31,56($sp)
ld $fp,48($sp)
ld $28,40($sp)
daddiu $sp,$sp,64
j $31
nop