.file "68_brainfk.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 read_program .type read_program, @function read_program: addi sp,sp,-48 sd s3,8(sp) sd ra,40(sp) sd s0,32(sp) sd s1,24(sp) sd s2,16(sp) call getint@plt lla s3,program ble a0,zero,.L4 slli s2,a0,2 mv s0,s3 add s1,s3,s2 .L3: call getch@plt sw a0,0(s0) addi s0,s0,4 bne s0,s1,.L3 .L2: ld ra,40(sp) ld s0,32(sp) add s3,s3,s2 sw zero,0(s3) ld s1,24(sp) ld s2,16(sp) ld s3,8(sp) addi sp,sp,48 jr ra .L4: li s2,0 j .L2 .size read_program, .-read_program .align 1 .globl interpret .type interpret, @function interpret: lw a4,0(a0) beq a4,zero,.L33 addi sp,sp,-64 sd s0,48(sp) sd s1,40(sp) sd s2,32(sp) sd s3,24(sp) sd s4,16(sp) sd s6,0(sp) sd ra,56(sp) sd s5,8(sp) mv s1,a0 li s0,0 li s4,50 lla s2,.L12 lla s6,tape lla s3,.LANCHOR0 .L9: addiw a5,a4,-43 sext.w a3,a5 bgtu a3,s4,.L10 slli a3,a5,32 srli a5,a3,30 add a5,a5,s2 lw a5,0(a5) add a5,a5,s2 jr a5 .section .rodata .align 2 .align 2 .L12: .word .L18-.L12 .word .L17-.L12 .word .L16-.L12 .word .L15-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L14-.L12 .word .L10-.L12 .word .L13-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L10-.L12 .word .L11-.L12 .text .L11: lw a5,0(s3) slli a5,a5,2 add a5,s6,a5 lw a5,0(a5) bne a5,zero,.L20 .L10: addiw s0,s0,1 slli a5,s0,2 add a5,s1,a5 lw a4,0(a5) bne a4,zero,.L9 .L37: ld ra,56(sp) ld s0,48(sp) ld s1,40(sp) ld s2,32(sp) ld s3,24(sp) ld s4,16(sp) ld s5,8(sp) ld s6,0(sp) addi sp,sp,64 jr ra .L13: lw a4,0(s3) addiw s0,s0,1 slli a5,s0,2 addiw a4,a4,1 sw a4,0(s3) add a5,s1,a5 lw a4,0(a5) bne a4,zero,.L9 j .L37 .L14: lw a4,0(s3) addiw s0,s0,1 slli a5,s0,2 addiw a4,a4,-1 sw a4,0(s3) add a5,s1,a5 lw a4,0(a5) bne a4,zero,.L9 j .L37 .L15: lw a5,0(s3) addiw s0,s0,1 slli a5,a5,2 add a5,s6,a5 lw a0,0(a5) call putch@plt slli a5,s0,2 add a5,s1,a5 lw a4,0(a5) bne a4,zero,.L9 j .L37 .L16: lw a5,0(s3) addiw s0,s0,1 slli a4,s0,2 slli a5,a5,2 add a5,s6,a5 lw a3,0(a5) add a4,s1,a4 addiw a3,a3,-1 sw a3,0(a5) lw a4,0(a4) bne a4,zero,.L9 j .L37 .L17: lw s5,0(s3) addiw s0,s0,1 call getch@plt slli s5,s5,2 add s5,s6,s5 slli a5,s0,2 sw a0,0(s5) add a5,s1,a5 lw a4,0(a5) bne a4,zero,.L9 j .L37 .L18: lw a5,0(s3) addiw s0,s0,1 slli a4,s0,2 slli a5,a5,2 add a5,s6,a5 lw a3,0(a5) add a4,s1,a4 addiw a3,a3,1 sw a3,0(a5) lw a4,0(a4) bne a4,zero,.L9 j .L37 .L20: slli a3,s0,2 add a3,s1,a3 lw a5,-4(a3) li a0,91 li a1,1 li a6,93 addiw a2,s0,-1 beq a5,a0,.L38 .L21: beq a5,a6,.L39 .L23: addi a3,a3,-4 .L22: mv a4,a5 lw a5,-4(a3) mv s0,a2 addiw a2,s0,-1 bne a5,a0,.L21 .L38: addiw a1,a1,-1 bne a1,zero,.L23 bne a4,zero,.L9 j .L37 .L39: addiw a1,a1,1 addi a3,a3,-4 j .L22 .L33: ret .size interpret, .-interpret .section .text.startup,"ax",@progbits .align 1 .globl main .type main, @function main: addi sp,sp,-16 sd ra,8(sp) call read_program lla a0,program call interpret ld ra,8(sp) li a0,0 addi sp,sp,16 jr ra .size main, .-main .globl ptr .globl program .globl tape .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 .set .LANCHOR0,. + 0 .type ptr, @object .size ptr, 4 ptr: .zero 4 .zero 4 .type program, @object .size program, 131072 program: .zero 131072 .type tape, @object .size tape, 262140 tape: .zero 262140 .type _sysy_idx, @object .size _sysy_idx, 4 _sysy_idx: .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