Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .global main
- main:
- push {r5, r6, lr}
- mov r0, #0
- mov r1, #1
- bl realloc
- mov r5, r0 // *values
- mov r6, #1 // counter
- loop:
- mov r0, r5
- mov r2, #4
- mul r1, r6, r2
- bl realloc
- mov r5, r0
- ldr r0, stdin_label
- ldr r0, [r0]
- bl fgetc
- cmp r0, #-1
- beq print_reversed
- strb r0, [r5, r6]
- add r6, #1
- b loop
- print_reversed:
- cmp r6, #1
- moveq r0, r5
- popeq {r5, r6, lr}
- bleq free
- bxeq lr
- print_loop:
- cmp r6, #0
- moveq r0, r5
- bleq free
- popeq {r5, r6, lr}
- bxeq lr
- ldrb r0, [r5, r6]
- ldr r1, stdout_label
- ldr r1, [r1]
- bl fputc
- sub r6, #1
- b print_loop
- stdin_label:
- .word stdin
- stdout_label:
- .word stdout
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement