sysy-data/hidden_functional_c/asm/12_DSU.s

506 lines
7.1 KiB
ArmAsm
Raw Permalink Normal View History

2024-06-14 13:34:46 +08:00
.text
.attribute 4, 16
.attribute 5, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
.file "12_DSU.sy"
.globl quick_read
.p2align 1
.type quick_read,@function
quick_read:
addi sp, sp, -48
sd ra, 40(sp)
sd s0, 32(sp)
sd s1, 24(sp)
sd s2, 16(sp)
sd s3, 8(sp)
call getch
addiw a1, a0, -58
li a2, -11
bltu a2, a1, .LBB0_5
li a1, 0
li s2, 45
li s0, -10
j .LBB0_3
.LBB0_2:
call getch
addiw a2, a0, -58
mv a1, s3
bgeu a2, s0, .LBB0_6
.LBB0_3:
sext.w a0, a0
li s3, 1
beq a0, s2, .LBB0_2
mv s3, a1
j .LBB0_2
.LBB0_5:
li s3, 0
.LBB0_6:
li s0, 0
li s1, 10
.LBB0_7:
mulw a1, s0, s1
addw a0, a0, a1
addiw s0, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s1, .LBB0_7
beqz s3, .LBB0_10
negw s0, s0
.LBB0_10:
mv a0, s0
ld ra, 40(sp)
ld s0, 32(sp)
ld s1, 24(sp)
ld s2, 16(sp)
ld s3, 8(sp)
addi sp, sp, 48
ret
.Lfunc_end0:
.size quick_read, .Lfunc_end0-quick_read
.globl init
.p2align 1
.type init,@function
init:
lui a0, %hi(n)
lw a0, %lo(n)(a0)
blez a0, .LBB1_3
addiw a0, a0, 1
slli a0, a0, 32
srli a0, a0, 32
li a1, 1
lui a2, %hi(fa+4)
addi a2, a2, %lo(fa+4)
.LBB1_2:
sw a1, 0(a2)
addi a1, a1, 1
addi a2, a2, 4
bne a0, a1, .LBB1_2
.LBB1_3:
ret
.Lfunc_end1:
.size init, .Lfunc_end1-init
.globl find
.p2align 1
.type find,@function
find:
addi sp, sp, -16
sd ra, 8(sp)
sd s0, 0(sp)
lui a1, %hi(fa)
addi a1, a1, %lo(fa)
slli a2, a0, 2
add s0, a2, a1
lw a1, 0(s0)
beq a1, a0, .LBB2_2
mv a0, a1
call find
sw a0, 0(s0)
.LBB2_2:
ld ra, 8(sp)
ld s0, 0(sp)
addi sp, sp, 16
ret
.Lfunc_end2:
.size find, .Lfunc_end2-find
.globl same
.p2align 1
.type same,@function
same:
addi sp, sp, -32
sd ra, 24(sp)
sd s0, 16(sp)
sd s1, 8(sp)
mv s0, a1
call find
mv s1, a0
mv a0, s0
call find
xor a0, a0, s1
seqz a0, a0
ld ra, 24(sp)
ld s0, 16(sp)
ld s1, 8(sp)
addi sp, sp, 32
ret
.Lfunc_end3:
.size same, .Lfunc_end3-same
.globl main
.p2align 1
.type main,@function
main:
addi sp, sp, -96
sd ra, 88(sp)
sd s0, 80(sp)
sd s1, 72(sp)
sd s2, 64(sp)
sd s3, 56(sp)
sd s4, 48(sp)
sd s5, 40(sp)
sd s6, 32(sp)
sd s7, 24(sp)
sd s8, 16(sp)
sd s9, 8(sp)
call getch
addiw a1, a0, -58
li a2, -11
bltu a2, a1, .LBB4_5
li a1, 0
li s2, 45
li s1, -10
j .LBB4_3
.LBB4_2:
call getch
addiw a2, a0, -58
mv a1, s3
bgeu a2, s1, .LBB4_6
.LBB4_3:
sext.w a0, a0
li s3, 1
beq a0, s2, .LBB4_2
mv s3, a1
j .LBB4_2
.LBB4_5:
li s3, 0
.LBB4_6:
li s1, 0
li s0, 10
.LBB4_7:
mulw a1, s1, s0
addw a0, a0, a1
addiw s1, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s0, .LBB4_7
beqz s3, .LBB4_10
neg s1, s1
.LBB4_10:
lui a0, %hi(n)
sw s1, %lo(n)(a0)
call getch
addiw a1, a0, -58
li a2, -11
bltu a2, a1, .LBB4_15
li a1, 0
li s2, 45
li s0, -10
j .LBB4_13
.LBB4_12:
call getch
addiw a2, a0, -58
mv a1, s3
bgeu a2, s0, .LBB4_16
.LBB4_13:
sext.w a0, a0
li s3, 1
beq a0, s2, .LBB4_12
mv s3, a1
j .LBB4_12
.LBB4_15:
li s3, 0
.LBB4_16:
li s0, 0
li s1, 10
.LBB4_17:
mulw a1, s0, s1
addw a0, a0, a1
addiw s0, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s1, .LBB4_17
beqz s3, .LBB4_20
negw s0, s0
.LBB4_20:
lui a0, %hi(n)
lw a0, %lo(n)(a0)
lui a1, %hi(m)
sw s0, %lo(m)(a1)
blez a0, .LBB4_23
addiw a0, a0, 1
slli a0, a0, 32
srli a0, a0, 32
li a1, 1
lui a2, %hi(fa+4)
addi a2, a2, %lo(fa+4)
.LBB4_22:
sw a1, 0(a2)
addi a1, a1, 1
addi a2, a2, 4
bne a0, a1, .LBB4_22
.LBB4_23:
beqz s0, .LBB4_69
li s2, 81
li s3, -11
li s4, 45
li s5, -10
li s6, 10
lui s7, %hi(m)
lui a0, %hi(fa)
addi s8, a0, %lo(fa)
j .LBB4_26
.LBB4_25:
mv a0, s1
call find
slli a1, s9, 2
add a1, a1, s8
sw a0, 0(a1)
lw a0, %lo(m)(s7)
addiw a0, a0, -1
sw a0, %lo(m)(s7)
beqz a0, .LBB4_69
.LBB4_26:
call getch
mv s0, a0
andi a0, a0, -5
bne a0, s2, .LBB4_26
call getch
addiw a1, a0, -58
bne s0, s2, .LBB4_33
bltu s3, a1, .LBB4_38
li a1, 0
j .LBB4_31
.LBB4_30:
call getch
addiw a2, a0, -58
mv a1, s1
bgeu a2, s5, .LBB4_39
.LBB4_31:
sext.w a0, a0
li s1, 1
beq a0, s4, .LBB4_30
mv s1, a1
j .LBB4_30
.LBB4_33:
bltu s3, a1, .LBB4_48
li a1, 0
j .LBB4_36
.LBB4_35:
call getch
addiw a2, a0, -58
mv a1, s1
bgeu a2, s5, .LBB4_49
.LBB4_36:
sext.w a0, a0
li s1, 1
beq a0, s4, .LBB4_35
mv s1, a1
j .LBB4_35
.LBB4_38:
li s1, 0
.LBB4_39:
li s0, 0
.LBB4_40:
mulw a1, s0, s6
addw a0, a0, a1
addiw s0, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s6, .LBB4_40
beqz s1, .LBB4_43
negw s0, s0
.LBB4_43:
call getch
addiw a1, a0, -58
bltu s3, a1, .LBB4_58
li a1, 0
j .LBB4_46
.LBB4_45:
call getch
addiw a2, a0, -58
mv a1, s9
bgeu a2, s5, .LBB4_59
.LBB4_46:
sext.w a0, a0
li s9, 1
beq a0, s4, .LBB4_45
mv s9, a1
j .LBB4_45
.LBB4_48:
li s1, 0
.LBB4_49:
li s0, 0
.LBB4_50:
mulw a1, s0, s6
addw a0, a0, a1
addiw s0, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s6, .LBB4_50
beqz s1, .LBB4_53
negw s0, s0
.LBB4_53:
mv a0, s0
call find
mv s9, a0
call getch
addiw a1, a0, -58
bltu s3, a1, .LBB4_64
li a1, 0
j .LBB4_56
.LBB4_55:
call getch
addiw a2, a0, -58
mv a1, s0
bgeu a2, s5, .LBB4_65
.LBB4_56:
sext.w a0, a0
li s0, 1
beq a0, s4, .LBB4_55
mv s0, a1
j .LBB4_55
.LBB4_58:
li s9, 0
.LBB4_59:
li s1, 0
.LBB4_60:
mulw a1, s1, s6
addw a0, a0, a1
addiw s1, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s6, .LBB4_60
beqz s9, .LBB4_63
negw s1, s1
.LBB4_63:
mv a0, s0
call find
mv s0, a0
mv a0, s1
call find
xor a0, a0, s0
seqz a0, a0
call putint
li a0, 10
call putch
lw a0, %lo(m)(s7)
addiw a0, a0, -1
sw a0, %lo(m)(s7)
bnez a0, .LBB4_26
j .LBB4_69
.LBB4_64:
li s0, 0
.LBB4_65:
li s1, 0
.LBB4_66:
mulw a1, s1, s6
addw a0, a0, a1
addiw s1, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s6, .LBB4_66
beqz s0, .LBB4_25
negw s1, s1
j .LBB4_25
.LBB4_69:
li a0, 0
ld ra, 88(sp)
ld s0, 80(sp)
ld s1, 72(sp)
ld s2, 64(sp)
ld s3, 56(sp)
ld s4, 48(sp)
ld s5, 40(sp)
ld s6, 32(sp)
ld s7, 24(sp)
ld s8, 16(sp)
ld s9, 8(sp)
addi sp, sp, 96
ret
.Lfunc_end4:
.size main, .Lfunc_end4-main
.type n,@object
.section .sbss,"aw",@nobits
.globl n
.p2align 2
n:
.word 0
.size n, 4
.type fa,@object
.bss
.globl fa
.p2align 2
fa:
.zero 400020
.size fa, 400020
.type m,@object
.section .sbss,"aw",@nobits
.globl m
.p2align 2
m:
.word 0
.size m, 4
.type _sysy_start,@object
.bss
.globl _sysy_start
.p2align 3
_sysy_start:
.zero 16
.size _sysy_start, 16
.type _sysy_end,@object
.globl _sysy_end
.p2align 3
_sysy_end:
.zero 16
.size _sysy_end, 16
.type _sysy_l1,@object
.globl _sysy_l1
.p2align 2
_sysy_l1:
.zero 4096
.size _sysy_l1, 4096
.type _sysy_l2,@object
.globl _sysy_l2
.p2align 2
_sysy_l2:
.zero 4096
.size _sysy_l2, 4096
.type _sysy_h,@object
.globl _sysy_h
.p2align 2
_sysy_h:
.zero 4096
.size _sysy_h, 4096
.type _sysy_m,@object
.globl _sysy_m
.p2align 2
_sysy_m:
.zero 4096
.size _sysy_m, 4096
.type _sysy_s,@object
.globl _sysy_s
.p2align 2
_sysy_s:
.zero 4096
.size _sysy_s, 4096
.type _sysy_us,@object
.globl _sysy_us
.p2align 2
_sysy_us:
.zero 4096
.size _sysy_us, 4096
.type _sysy_idx,@object
.section .sbss,"aw",@nobits
.globl _sysy_idx
.p2align 2
_sysy_idx:
.word 0
.size _sysy_idx, 4
.ident "Debian clang version 14.0.6"
.section ".note.GNU-stack","",@progbits
.addrsig