idiv:
str x30, [sp, -16]
udiv x2, x0, x1
ldr x30, [sp], 16
ret
.ltorg
_print_character:
str x30, [sp, -16]
PUTCHAR
ldr x30, [sp], 16
ret
.ltorg
_read_char:
str x30, [sp, -16]
GETCHAR
ldr x30, [sp], 16
ret
.ltorg
signed_quotient:
str x30, [sp, -16]
cmp w0, 0
bge .L2
cmp w1, 0
bge .L4
mov w2, 0
sub w0, w2, w0
sub w1, w2, w1
bl idiv
mov w0, w2
b .L5
.L4:
mov w2, 0
sub w0, w2, w0
bl idiv
mov w0, w2
mov w2, 0
sub w0, w2, w0
.L5:
b .L3
.L2:
cmp w1, 0
bge .L6
mov w2, 0
sub w1, w2, w1
bl idiv
mov w0, w2
mov w2, 0
sub w0, w2, w0
b .L7
.L6:
bl idiv
mov w0, w2
.L7:
.L3:
ldr x30, [sp], 16
ret
.ltorg
signed_remainder:
str x30, [sp, -16]
udiv x2, x0, x1
msub x0, x2, x1, x0
ldr x30, [sp], 16
ret
.ltorg