112 lines
1.4 KiB
ArmAsm
112 lines
1.4 KiB
ArmAsm
main:
|
|
addi sp,sp,-32
|
|
sw ra,28(sp)
|
|
sw s0,24(sp)
|
|
addi s0,sp,32
|
|
sw zero,-20(s0)
|
|
li a5,32
|
|
sw a5,-24(s0)
|
|
li a2,7
|
|
li a1,0
|
|
lw a0,-20(s0)
|
|
call isPalindrome
|
|
.DEBUG_call1_return:
|
|
mv a5,a0
|
|
beqz a5,.L2
|
|
li a2,15
|
|
li a1,0
|
|
lw a0,-24(s0)
|
|
call isPalindrome
|
|
.DEBUG_call2_return:
|
|
mv a5,a0
|
|
beqz a5,.L2
|
|
li a5,1
|
|
j .L4
|
|
.L2:
|
|
li a5,0
|
|
.L4:
|
|
mv a0,a5
|
|
lw ra,28(sp)
|
|
lw s0,24(sp)
|
|
addi sp,sp,32
|
|
jr ra
|
|
isPalindrome:
|
|
addi sp,sp,-48
|
|
sw ra,44(sp)
|
|
sw s0,40(sp)
|
|
addi s0,sp,48
|
|
sw a0,-36(s0)
|
|
sw a1,-40(s0)
|
|
sw a2,-44(s0)
|
|
lw a4,-40(s0)
|
|
lw a5,-44(s0)
|
|
blt a4,a5,.L6
|
|
li a5,1
|
|
j .L7
|
|
.L6:
|
|
lw a5,-40(s0)
|
|
slli a5,a5,2
|
|
lw a4,-36(s0)
|
|
add a5,a4,a5
|
|
lw a4,0(a5)
|
|
lw a5,-44(s0)
|
|
slli a5,a5,2
|
|
lw a3,-36(s0)
|
|
add a5,a3,a5
|
|
lw a5,0(a5)
|
|
sub a5,a4,a5
|
|
seqz a5,a5
|
|
andi a5,a5,0xff
|
|
sw a5,-20(s0)
|
|
lw a5,-20(s0)
|
|
beqz a5,.CompareFailed
|
|
lw a5,-40(s0)
|
|
addi a4,a5,1
|
|
lw a5,-44(s0)
|
|
addi a5,a5,-1
|
|
mv a2,a5
|
|
mv a1,a4
|
|
lw a0,-36(s0)
|
|
call isPalindrome
|
|
mv a5,a0
|
|
beqz a5,.CompareFailed
|
|
li a5,1
|
|
j .L7
|
|
.CompareFailed:
|
|
li a5,0
|
|
.L7:
|
|
mv a0,a5
|
|
lw ra,44(sp)
|
|
lw s0,40(sp)
|
|
addi sp,sp,48
|
|
jr ra
|
|
|
|
#memset 0, 10
|
|
#memset 4, -3
|
|
#memset 8, 8
|
|
#memset 12, 0
|
|
#memset 16, 0
|
|
#memset 20, 8
|
|
#memset 24, -3
|
|
#memset 28, 10
|
|
|
|
|
|
#memset 32, 10
|
|
#memset 36, -3
|
|
#memset 40, 8
|
|
#memset 44, 0
|
|
#memset 48, 0
|
|
#memset 52, 10
|
|
|
|
#memset 56, -3
|
|
#memset 60, 8
|
|
|
|
#memset 64, -3
|
|
#memset 68, 8
|
|
|
|
#memset 72, 10
|
|
#memset 76, 0
|
|
#memset 80, 0
|
|
#memset 84, 8
|
|
#memset 88, -3
|
|
#memset 92, 10
|