.file "74_kmp.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 get_next .type get_next, @function get_next: li a5,-1 sw a5,0(a1) lw a2,0(a0) li a4,-1 li a6,0 li t1,-1 beq a2,zero,.L1 .L2: slli a5,a4,2 add a7,a0,a5 addiw a3,a4,1 add a5,a1,a5 beq a4,t1,.L3 .L10: lw a4,0(a7) beq a4,a2,.L3 lw a4,0(a5) slli a5,a4,2 add a7,a0,a5 addiw a3,a4,1 add a5,a1,a5 bne a4,t1,.L10 .L3: addiw a6,a6,1 slli a5,a6,2 add a4,a1,a5 sw a3,0(a4) add a5,a0,a5 lw a2,0(a5) sext.w a4,a3 bne a2,zero,.L2 ret .L1: ret .size get_next, .-get_next .align 1 .globl KMP .type KMP, @function KMP: li a5,-16384 li t0,-16384 li a4,16384 add a4,a4,a5 lw a6,0(a0) add sp,sp,t0 add a5,a4,sp li a4,-1 sw a4,0(a5) mv a2,a0 li a7,0 mv a0,a6 li t4,-1 li t1,-16384 beq a6,zero,.L18 .L12: slli a5,a4,2 li t5,16384 add t5,t5,a5 add t3,a2,a5 add a5,t5,sp addiw a3,a4,1 add a5,t1,a5 beq a4,t4,.L15 .L30: lw a4,0(t3) beq a4,a0,.L15 lw a4,0(a5) li t5,16384 slli a5,a4,2 add t5,t5,a5 add t3,a2,a5 add a5,t5,sp addiw a3,a4,1 add a5,t1,a5 bne a4,t4,.L30 .L15: addiw a7,a7,1 slli a5,a7,2 li a0,16384 add a4,a2,a5 add a0,a0,a5 add a5,a0,sp lw a0,0(a4) add a5,t1,a5 sw a3,0(a5) sext.w a4,a3 bne a0,zero,.L12 .L18: lw a3,0(a1) li a7,-16384 li a4,16384 add a4,a4,a7 li a0,0 li a5,0 add a7,a4,sp li t1,-1 bne a3,zero,.L13 j .L23 .L19: lw a5,0(a4) bne a5,t1,.L20 addiw a0,a0,1 li a5,0 .L20: slli a4,a0,2 add a4,a1,a4 lw a3,0(a4) slli a4,a5,2 add a4,a2,a4 beq a3,zero,.L23 lw a6,0(a4) .L13: slli a4,a5,2 add a4,a7,a4 bne a3,a6,.L19 addiw a5,a5,1 slli a4,a5,2 add a4,a2,a4 lw a4,0(a4) addiw a0,a0,1 bne a4,zero,.L20 li t0,16384 add sp,sp,t0 jr ra .L23: li t0,16384 li a0,-1 add sp,sp,t0 jr ra .size KMP, .-KMP .align 1 .globl read_str .type read_str, @function read_str: addi sp,sp,-32 sd s0,16(sp) sd s1,8(sp) sd s2,0(sp) sd ra,24(sp) mv s0,a0 li s1,0 li s2,10 j .L33 .L35: addiw s1,s1,1 .L33: call getch@plt sw a0,0(s0) mv a5,s0 addi s0,s0,4 bne a0,s2,.L35 ld ra,24(sp) ld s0,16(sp) sw zero,0(a5) ld s2,0(sp) mv a0,s1 ld s1,8(sp) addi sp,sp,32 jr ra .size read_str, .-read_str .section .text.startup,"ax",@progbits .align 1 .globl main .type main, @function main: addi sp,sp,-48 li t0,-32768 sd s0,32(sp) addi t0,t0,16 li s0,-32768 li a5,32768 sd s1,24(sp) sd ra,40(sp) add a5,a5,s0 add sp,sp,t0 add s0,a5,sp li s1,10 .L37: call getch@plt sw a0,0(s0) mv a5,s0 addi s0,s0,4 bne a0,s1,.L37 li s0,-16384 sw zero,0(a5) li a5,32768 add a5,a5,s0 add s0,a5,sp li s1,10 .L38: call getch@plt sw a0,0(s0) mv a5,s0 addi s0,s0,4 bne a0,s1,.L38 li a1,-16384 li a4,32768 add a4,a4,a1 add a1,a4,sp li a0,-32768 li a4,32768 add a4,a4,a0 add a0,a4,sp sw zero,0(a5) call KMP call putint@plt li a0,10 call putch@plt li t0,32768 addi t0,t0,-16 add sp,sp,t0 ld ra,40(sp) ld s0,32(sp) ld s1,24(sp) li a0,0 addi sp,sp,48 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