Advertisement
Guest User

Untitled

a guest
May 18th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. read = 0
  2. write = 1
  3. exit  = 60
  4. buffer_size = 201
  5.  
  6.         .global _start
  7.        .type _start, @function
  8.        .section .text
  9.  
  10. _start:
  11. read_input:
  12.         sub     $buffer_size, %rsp              # allocate buffer
  13.         mov     $read, %rax
  14.         mov     $0, %rdi
  15.         mov     %rsp, %rsi                      # *buff
  16.         mov     $buffer_size, %rdx              # size_t
  17.         dec     %rdx                            # 1 byte for \0
  18.         syscall
  19.  
  20.         #       setup data
  21.         mov     $1, %rdx                        # write 1 byte each iteration
  22.  
  23.         mov     %rax, %r9                       # how many bytes read
  24.         mov     %rax, %rcx
  25.  
  26.         mov     %rsp, %r8                       #
  27.         add     %r9, %r8                        #
  28.         sub     $1, %r8                         # char addr
  29.  
  30. check_exit_status:
  31.         cmp     $0, %rcx
  32.         je      end
  33.  
  34.  
  35.         mov     $write, %rax
  36. write_reversed:
  37.         cmp     $0, %r9
  38.         je      read_input
  39.  
  40.         dec     %r9
  41.         mov     %r8, %rsi
  42.         dec     %r8
  43.  
  44.         syscall
  45.         jmp     write_reversed
  46.  
  47.  
  48. end:
  49.         add     $buffer_size, %rsp              # dealloc buffer
  50.         mov     $exit, %rax
  51.         mov     $0, %rdi
  52.         syscall
  53.        
  54.         .size   _start, . - _start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement