sysy-data/functional_c/asm/78_side_effect.s

155 lines
2.3 KiB
ArmAsm
Raw Normal View History

2024-06-14 13:10:27 +08:00
.file "78_side_effect.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 inc_a
.type inc_a, @function
inc_a:
lla a5,.LANCHOR0
lw a0,0(a5)
addiw a0,a0,1
sw a0,0(a5)
ret
.size inc_a, .-inc_a
.section .text.startup,"ax",@progbits
.align 1
.globl main
.type main, @function
main:
addi sp,sp,-48
sd s0,32(sp)
lla s0,.LANCHOR0
lw a4,0(s0)
sd s1,24(sp)
sd s2,16(sp)
sd s3,8(sp)
sd s4,0(sp)
sd ra,40(sp)
li s1,6
li s2,-1
li s4,-2
li s3,13
.L7:
bne a4,s2,.L16
.L4:
li a5,1
li a0,1
.L5:
sw a5,0(s0)
call putint@plt
li a0,10
call putch@plt
lw a5,4(s0)
lw a4,0(s0)
slliw a5,a5,1
sw a5,4(s0)
.L6:
addiw s1,s1,-1
bne s1,zero,.L7
mv a0,a4
call putint@plt
li a0,32
call putch@plt
lw a0,4(s0)
call putint@plt
li a0,10
call putch@plt
lw a0,0(s0)
ld ra,40(sp)
ld s0,32(sp)
ld s1,24(sp)
ld s2,16(sp)
ld s3,8(sp)
ld s4,0(sp)
addi sp,sp,48
jr ra
.L16:
addiw a0,a4,3
beq a4,s4,.L4
sw a0,0(s0)
beq a0,zero,.L4
call putint@plt
li a0,32
call putch@plt
lw a0,4(s0)
call putint@plt
li a0,10
call putch@plt
lw a5,0(s0)
addiw a0,a5,1
addiw a5,a5,5
ble a0,s3,.L8
sext.w a4,a5
sw a5,0(s0)
j .L6
.L8:
mv a5,a0
j .L5
.size main, .-main
.globl b
.globl a
.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
.data
.align 2
.set .LANCHOR0,. + 0
.type a, @object
.size a, 4
a:
.word -1
.type b, @object
.size b, 4
b:
.word 1
.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