Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 0.68 KB | None | 0 0
  1.     .text
  2.     .global main
  3.  
  4. main:
  5.     push {r5, r6, lr}
  6.  
  7.     mov r0, #0
  8.     mov r1, #1
  9.  
  10.     bl realloc
  11.  
  12.     mov r5, r0 // *values
  13.     mov r6, #1 // counter
  14.  
  15. loop:
  16.     mov r0, r5
  17.     mov r2, #4
  18.     mul r1, r6, r2
  19.     bl realloc
  20.  
  21.     mov r5, r0
  22.  
  23.     ldr r0, stdin_label
  24.     ldr r0, [r0]
  25.     bl fgetc
  26.  
  27.     cmp r0, #-1
  28.     beq print_reversed
  29.  
  30.     strb r0, [r5, r6]
  31.  
  32.     add r6, #1
  33.     b loop
  34.  
  35. print_reversed:
  36.     cmp r6, #1
  37.     moveq r0, r5
  38.     popeq {r5, r6, lr}
  39.     bleq free
  40.     bxeq lr
  41.  
  42. print_loop:
  43.     cmp r6, #0
  44.     moveq r0, r5
  45.     bleq free
  46.     popeq {r5, r6, lr}
  47.     bxeq lr
  48.  
  49.     ldrb r0, [r5, r6]
  50.  
  51.     ldr r1, stdout_label
  52.     ldr r1, [r1]
  53.     bl fputc
  54.  
  55.     sub r6, #1
  56.     b print_loop
  57.  
  58. stdin_label:
  59.     .word stdin
  60.  
  61. stdout_label:
  62.     .word stdout
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement