fork(4) download
  1. .equ INPUT_VALUE, 5
  2. @ Embest board specific software interrupts
  3. .equ SWI_PrInt, 0x6b
  4. .equ Stdout, 0x01
  5. .equ SWI_Exit, 0x11
  6.  
  7. .text
  8. factorial:
  9. @ Push stack
  10. stmfd sp!, {r4, lr}
  11. @ Store n in local variable
  12. mov r4, r0
  13. @ branch if n > 1
  14. cmp r4, #1
  15. bgt factorial_recurse
  16. @ return 1
  17. mov r0, #1
  18. bal factorial_end
  19. factorial_recurse:
  20. @ calculate factorial(n-1)
  21. mov r0, r4
  22. sub r0, r0, #1
  23. bl factorial
  24. @ multiply returned value by n
  25. mul r0, r4, r0
  26. @ now returns n * factorial(n-1)
  27. factorial_end:
  28. ldmfd sp!, {r4, lr}
  29. bx lr
  30.  
  31. .global _start
  32. _start:
  33. stmfd sp!, {lr}
  34. mov r0, #INPUT_VALUE
  35. bl factorial
  36.  
  37. @ print to stdout
  38. mov r1, r0
  39. mov r0, #Stdout
  40. swi SWI_PrInt
  41.  
  42. ldmfd sp!, {lr}
  43. @ bx lr
  44. swi SWI_Exit
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty