Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- read = 0
- write = 1
- exit = 60
- buffer_size = 201
- .global _start
- .type _start, @function
- .section .text
- _start:
- read_input:
- sub $buffer_size, %rsp # allocate buffer
- mov $read, %rax
- mov $0, %rdi
- mov %rsp, %rsi # *buff
- mov $buffer_size, %rdx # size_t
- dec %rdx # 1 byte for \0
- syscall
- # setup data
- mov $1, %rdx # write 1 byte each iteration
- mov %rax, %r9 # how many bytes read
- mov %rax, %rcx
- mov %rsp, %r8 #
- add %r9, %r8 #
- sub $1, %r8 # char addr
- check_exit_status:
- cmp $0, %rcx
- je end
- mov $write, %rax
- write_reversed:
- cmp $0, %r9
- je read_input
- dec %r9
- mov %r8, %rsi
- dec %r8
- syscall
- jmp write_reversed
- end:
- add $buffer_size, %rsp # dealloc buffer
- mov $exit, %rax
- mov $0, %rdi
- syscall
- .size _start, . - _start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement