Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. @ writeStrDriver3.s
  2.  
  3. @ define system
  4. .cpu cortex-a53
  5. .fpu neon-fp-armv8
  6. .syntax unified
  7.  
  8. @ constants
  9. .equ STDOUT, 1
  10. .equ NEWLINE, 10
  11.  
  12. @ program
  13. .text
  14. .align 2
  15. .global main
  16. .type main, %function
  17.  
  18. main: @ variables:
  19. @ string buffer size
  20. @ string address
  21. @ newline address
  22. @ string size
  23.  
  24. push { r4, r5, r6, r7, lr } @ save registers
  25.  
  26. mov r4, 4 @ r4 = string buffer size
  27. mov r0, 8 @ get number of bytes for local vars
  28. sub sp, sp, r0 @ allocate memory
  29. sub r1, r0, r4 @ get string address offset from sp
  30. add r5, sp, r1 @ r5 = string address
  31. sub r6, r5, 1 @ r6 = newline address
  32. mov r7, 0 @ r7 = string size
  33.  
  34. mov r0, r4 @ pass string buffer size argument
  35. mov r1, r5 @ pass string address argument
  36. bl readLn @ execute readLn
  37. mov r7, r0 @ get string size
  38.  
  39. mov r0, r7 @ pass string size argument
  40. mov r1, r5 @ pass string address argument
  41. bl writeStr @ execute writeStr
  42.  
  43. mov r0, NEWLINE @ load newline character
  44. strb r0, [r6] @ store newline at newline address
  45.  
  46. mov r0, STDOUT @ pass output argument
  47. mov r1, r6 @ pass address argument
  48. mov r2, 1 @ pass size argument
  49. bl write @ execute write
  50.  
  51. mov r0, 0 @ return success
  52. add sp, sp, 8 @ deallocate memory
  53. pop { r4, r5, r6, r7, pc } @ restore registers
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement