提问人:denisssj 提问时间:11/4/2023 最后编辑:denisssj 更新时间:11/4/2023 访问量:21
此 RISC-V 代码不会因免费系统调用中的某些问题而停止
This RISC-V Code that does not halt due to some problem in free syscall
问:
这是我在隔离与较大代码相关的问题后编写的简单 RISC-V 代码。
.globl main
# we have a0, a1, a2
main:
addi sp, sp, -36
sw s0, 0(sp)
sw s1, 4(sp)
sw s2, 8(sp)
sw s3, 12(sp)
sw s4, 16(sp)
sw s5, 20(sp)
sw s6, 24(sp)
sw s7, 28(sp)
sw s8, 32(sp)
addi sp, sp, -24
sw ra, 8(sp)
sw a0, 12(sp)
sw a1, 16(sp)
sw a2, 20(sp)
li a0, 4
jal ra, malloc
mv s0, a0
lw ra, 8(sp)
lw a0, 12(sp)
lw a1, 16(sp)
lw a2, 20(sp)
addi sp, sp, 24
# cleaning m0
addi sp, sp, -16
sw a0, 0(sp)
sw a1, 4(sp)
sw a2, 8(sp)
sw ra, 12(sp)
mv a0, s0
jal ra, free
lw a0, 0(sp)
lw a1, 4(sp)
lw a2, 8(sp)
lw ra, 12(sp)
addi sp, sp, 16
#Epilog
lw s0, 0(sp)
lw s1, 4(sp)
lw s2, 8(sp)
lw s3, 12(sp)
lw s4, 16(sp)
lw s5, 20(sp)
lw s6, 24(sp)
lw s7, 28(sp)
lw s8, 32(sp)
addi sp, sp, 36
ret
free:
mv a1 a0
li a0 0x3CC
addi a6 x0 4
ecall
ret
malloc:
mv a1 a0
li a0 0x3CC
addi a6 x0 1
ecall
ret
此代码不会停止。但是,当我注释掉调用以释放代码的代码时,代码工作正常。malloc 和 free 的代码片段取自 Berkeley 的 cs61C fa2020 项目 2。我尝试使用金星模拟器运行代码。
答: 暂无答案
下一个:等待所有任务在线程池中完成
评论