Files
2025-yatcpu/lab4/coremark/yatcpu/div.s
TOKISAKIX\21168 910ee11168 init repo
2023-12-11 21:50:22 +08:00

72 lines
906 B
ArmAsm

.text
.globl __divsi3
__divsi3:
bltz a0, .L10
bltz a1, .L11
.globl __udivsi3
__udivsi3:
mv a2, a1
mv a1, a0
li a0, -1
beqz a2, .L5
li a3, 1
bgeu a2, a1, .L2
.L1:
blez a2, .L2
slli a2, a2, 1
slli a3, a3, 1
bgtu a1, a2, .L1
.L2:
li a0, 0
.L3:
bltu a1, a2, .L4
sub a1, a1, a2
or a0, a0, a3
.L4:
srli a3, a3, 1
srli a2, a2, 1
bnez a3, .L3
.L5:
ret
.globl __umodsi3
__umodsi3:
move t0, ra
jal __udivsi3
move a0, a1
jr t0
.L10:
neg a0, a0
bgtz a1, .L12
neg a1, a1
j __udivsi3
.L11:
neg a1, a1
.L12:
move t0, ra
jal __udivsi3
neg a0, a0
jr t0
.globl __modsi3
__modsi3:
move t0, ra
bltz a1, .L31
bltz a0, .L32
.L30:
jal __udivsi3
move a0, a1
jr t0
.L31:
neg a1, a1
bgez a0, .L30
.L32:
neg a0, a0
jal __udivsi3
neg a0, a1
jr t0