TDT4255/src/test/resources/tests/programs/palindrome.s
2019-06-07 17:43:33 +02:00

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