.file "72_hanoi.sy" .option pic .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" .attribute unaligned_access, 0 .attribute stack_align, 16 .text .align 1 .globl move .type move, @function move: addi sp,sp,-16 sd ra,8(sp) sd s0,0(sp) mv s0,a1 call putint@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,44 call putch@plt ld s0,0(sp) ld ra,8(sp) li a0,32 addi sp,sp,16 tail putch@plt .size move, .-move .align 1 .globl hanoi .type hanoi, @function hanoi: addi sp,sp,-288 sd s3,248(sp) sd s5,232(sp) sd ra,280(sp) sd s0,272(sp) sd s1,264(sp) sd s2,256(sp) sd s4,240(sp) sd s6,224(sp) sd s7,216(sp) sd s8,208(sp) sd s9,200(sp) sd s10,192(sp) sd s11,184(sp) li a4,1 mv s3,a1 mv s5,a3 beq a0,a4,.L17 li a4,2 mv s8,a2 beq a0,a4,.L6 addiw s6,a0,-2 mv s8,a1 li s11,1 mv s2,a2 .L18: beq s6,s11,.L25 addiw s3,s6,-1 sd s6,40(sp) mv a5,s3 sw s3,88(sp) mv s1,s8 mv s9,s8 mv s7,s5 mv s8,s5 beq a5,s11,.L26 .L45: addiw s6,a5,-1 sd a5,48(sp) mv a2,s6 sd s1,8(sp) sd s2,56(sp) mv s10,s9 mv s9,s8 mv s8,s6 beq a2,s11,.L27 .L44: ld s4,8(sp) addiw a4,a2,-1 sd s1,64(sp) sd a2,72(sp) sd s7,80(sp) sd s4,16(sp) sw a4,92(sp) mv s1,s2 mv s2,s7 beq a4,s11,.L28 .L43: addiw s7,a4,-1 mv s6,s7 sd a4,96(sp) sd s1,104(sp) sw s8,144(sp) mv s7,s10 ld s5,16(sp) mv s10,s9 mv s0,s1 mv s9,s6 beq s6,s11,.L29 .L41: addiw s8,s6,-1 mv s4,s8 mv s3,s8 mv s1,s2 mv s8,s6 sd s5,0(sp) sd s5,24(sp) mv s6,s2 sw s4,36(sp) .L23: beq s3,s11,.L30 addiw a2,s3,-1 mv s4,a2 sd s8,112(sp) sd s3,120(sp) sd s0,128(sp) sd s6,136(sp) sw a2,148(sp) ld s5,0(sp) mv s2,s0 sext.w s8,s4 beq s4,s11,.L31 .L42: mv s3,s1 sd s1,160(sp) mv s6,s4 sd s5,152(sp) mv s1,s5 .L14: sext.w a4,s4 mv s0,s2 mv s5,s1 .L16: addiw a4,a4,-1 mv a0,a4 mv a3,s0 mv a1,s5 mv a2,s3 sd a4,168(sp) call hanoi mv a0,s5 call putint@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt ld a4,168(sp) mv a5,s5 beq a4,s11,.L15 mv s5,s0 mv s0,a5 j .L16 .L33: mv s3,s2 .L6: mv a0,s3 call putint@plt li a0,32 call putch@plt mv a0,s8 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv s3,s8 .L17: mv a0,s3 call putint@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,44 call putch@plt ld s0,272(sp) ld ra,280(sp) ld s1,264(sp) ld s2,256(sp) ld s3,248(sp) ld s4,240(sp) ld s5,232(sp) ld s6,224(sp) ld s7,216(sp) ld s8,208(sp) ld s9,200(sp) ld s10,192(sp) ld s11,184(sp) li a0,32 addi sp,sp,288 tail putch@plt .L30: ld s2,0(sp) mv s5,s0 addiw s4,s3,-1 .L12: mv a0,s2 call putint@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,32 call putch@plt mv a0,s1 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,32 call putch@plt mv a0,s1 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt ld s2,0(sp) mv a0,s2 call putint@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt sext.w a5,s4 beq s3,s11,.L38 sd s1,0(sp) mv s3,a5 mv s1,s2 j .L23 .L38: ld s5,24(sp) lw s4,36(sp) mv s2,s6 mv s6,s8 .L11: mv a0,s1 call putint@plt li a0,32 call putch@plt ld s3,0(sp) sext.w s4,s4 mv a0,s3 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s1 call putint@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt beq s6,s11,.L37 mv a5,s5 mv s6,s4 mv s5,s0 mv s0,a5 bne s6,s11,.L41 .L29: sd s2,0(sp) mv s1,s5 addiw s4,s6,-1 j .L11 .L15: mv a0,s0 call putint@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s1 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt addiw s4,s4,-1 li a0,32 call putch@plt beq s4,s11,.L32 mv a4,s1 mv s1,s3 mv s3,a4 j .L14 .L32: mv s0,s1 ld s5,152(sp) ld s1,160(sp) mv s4,s6 .L13: mv a0,s3 call putint@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,32 call putch@plt mv a0,s1 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt addiw s4,s4,-1 beq s8,s11,.L39 mv a5,s5 sext.w s8,s4 mv s5,s2 mv s2,a5 bne s4,s11,.L42 .L31: mv s0,s1 mv s3,s5 j .L13 .L37: ld a4,96(sp) ld s1,104(sp) lw s8,144(sp) sext.w s6,s9 mv s9,s10 mv s10,s7 .L10: mv a0,s0 sd a4,0(sp) call putint@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt ld s0,16(sp) mv a0,s0 call putint@plt li a0,32 call putch@plt mv a0,s1 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt ld a4,0(sp) beq a4,s11,.L36 sd s2,16(sp) mv a4,s6 mv s2,s0 bne a4,s11,.L43 .L28: ld s0,16(sp) mv s5,s1 addiw s6,a4,-1 j .L10 .L39: ld s8,112(sp) ld s3,120(sp) ld s0,128(sp) ld s6,136(sp) lw s4,148(sp) j .L12 .L36: mv s3,s2 ld a2,72(sp) mv s2,s1 ld s7,80(sp) ld s1,64(sp) ld s4,16(sp) lw a5,92(sp) .L9: mv a0,s3 sd a2,16(sp) sw a5,0(sp) call putint@plt li a0,32 call putch@plt mv a0,s4 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s4 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt ld s0,8(sp) mv a0,s0 call putint@plt li a0,32 call putch@plt mv a0,s7 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt lw a5,0(sp) ld a2,16(sp) sext.w a5,a5 beq a2,s11,.L35 sd s2,8(sp) mv a2,a5 mv s2,s0 bne a2,s11,.L44 .L27: ld s3,8(sp) mv s4,s7 addiw a5,a2,-1 j .L9 .L35: mv s5,s2 ld a5,48(sp) ld s0,8(sp) ld s2,56(sp) sext.w s3,s8 mv s8,s9 mv s9,s10 .L8: mv a0,s5 sd a5,0(sp) call putint@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,32 call putch@plt mv a0,s7 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s0 call putint@plt li a0,32 call putch@plt mv a0,s7 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s1 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt ld a5,0(sp) beq a5,s11,.L34 mv a4,s1 mv a5,s3 mv s1,s7 mv s7,a4 bne a5,s11,.L45 .L26: mv s0,s2 mv s5,s1 addiw s3,a5,-1 j .L8 .L25: mv s4,s5 mv s7,s8 addiw s0,s6,-1 .L7: mv a0,s7 call putint@plt li a0,32 call putch@plt mv a0,s4 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s7 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s4 call putint@plt li a0,32 call putch@plt mv a0,s2 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s8 call putint@plt li a0,32 call putch@plt mv a0,s5 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt sext.w s0,s0 beq s6,s11,.L33 mv a5,s8 mv s6,s0 mv s8,s2 mv s2,a5 j .L18 .L34: mv s5,s8 ld s6,40(sp) lw s0,88(sp) mv s4,s1 mv s8,s9 j .L7 .size hanoi, .-hanoi .section .text.startup,"ax",@progbits .align 1 .globl main .type main, @function main: addi sp,sp,-80 sd ra,72(sp) sd s0,64(sp) sd s1,56(sp) sd s2,48(sp) sd s3,40(sp) sd s4,32(sp) sd s5,24(sp) sd s6,16(sp) sd s7,8(sp) call getint@plt ble a0,zero,.L57 mv s7,a0 li s5,1 .L49: call getint@plt mv s4,a0 beq a0,s5,.L55 addiw s3,a0,-1 li s4,2 beq s3,s5,.L50 mv s6,s3 li s4,1 li s3,2 .L52: sext.w s0,s6 mv s1,s4 li s2,3 .L54: addiw s0,s0,-1 mv a3,s2 mv a1,s1 mv a2,s3 mv a0,s0 call hanoi mv a0,s1 call putint@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a5,s1 beq s0,s5,.L53 mv s1,s2 mv s2,a5 j .L54 .L53: mv a0,s2 call putint@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s4 call putint@plt li a0,32 call putch@plt li a0,3 call putint@plt li a0,44 call putch@plt addiw s6,s6,-1 li a0,32 call putch@plt beq s6,s5,.L50 mv a5,s4 mv s4,s3 mv s3,a5 j .L52 .L50: mv a0,s3 call putint@plt li a0,32 call putch@plt mv a0,s4 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt mv a0,s3 call putint@plt li a0,32 call putch@plt li a0,3 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt .L55: mv a0,s4 call putint@plt li a0,32 call putch@plt li a0,3 call putint@plt li a0,44 call putch@plt li a0,32 call putch@plt addiw s7,s7,-1 li a0,10 call putch@plt bne s7,zero,.L49 .L57: ld ra,72(sp) ld s0,64(sp) ld s1,56(sp) ld s2,48(sp) ld s3,40(sp) ld s4,32(sp) ld s5,24(sp) ld s6,16(sp) ld s7,8(sp) li a0,0 addi sp,sp,80 jr ra .size main, .-main .globl _sysy_idx .globl _sysy_us .globl _sysy_s .globl _sysy_m .globl _sysy_h .globl _sysy_l2 .globl _sysy_l1 .globl _sysy_end .globl _sysy_start .bss .align 3 .type _sysy_idx, @object .size _sysy_idx, 4 _sysy_idx: .zero 4 .zero 4 .type _sysy_us, @object .size _sysy_us, 4096 _sysy_us: .zero 4096 .type _sysy_s, @object .size _sysy_s, 4096 _sysy_s: .zero 4096 .type _sysy_m, @object .size _sysy_m, 4096 _sysy_m: .zero 4096 .type _sysy_h, @object .size _sysy_h, 4096 _sysy_h: .zero 4096 .type _sysy_l2, @object .size _sysy_l2, 4096 _sysy_l2: .zero 4096 .type _sysy_l1, @object .size _sysy_l1, 4096 _sysy_l1: .zero 4096 .type _sysy_end, @object .size _sysy_end, 16 _sysy_end: .zero 16 .type _sysy_start, @object .size _sysy_start, 16 _sysy_start: .zero 16 .ident "GCC: (Debian 12.2.0-13) 12.2.0" .section .note.GNU-stack,"",@progbits