NOTE: arm64 print number by use svc
NOTE: A problem is single digit print with trailing 0
.global printNumberEntry printNumberEntry: // asked two words on stack sub sp, sp, #16 mov x15, #10 mov x12, x0 // print prepare // fd(x0) = 1(stdout) mov x0, #1 // len(x2) = 1 mov x2, #1 // Unix write system call mov x16, #4 printNumber: // number = x12 // x14 = x12 / 10 // now x14 is rounded-down quotient of x12 udiv x14, x12, x15 // x13 = x14 * 10 - x12 msub x13, x14, x15, x12 // store rounded-down quotient to x12 for next loop mov x12, x14 // digit to string add x13, x13, #48 strb w13, [sp] // buf(x1) = sp mov x1, sp svc #0 // loop part cmp x12, #0 b.eq exit b printNumber exit: mov x13, #10 strb w13, [sp] mov x1, sp svc #0 // put used stack back add sp, sp, #16 ret