;;; rdi should contain the source to copy from ;;; rsi should contain the destination pointer ;;; rdx should contain the number of bytes to copy copy_mem_to_string: cmp rdx, 0 jz .finish mov r8, [rdi] mov [rsi], r8 inc rsi inc rdi dec rdx jmp copy_mem_to_string .finish: mov byte [rsi], 0 ret ;;; rdi should contain the source to copy from ;;; rsi should contain the destination pointer copy_line_to_string: mov rax, 0 .start: cmp byte [rdi], 10 jz .finish mov r8, [rdi] mov [rsi], r8 inc rsi inc rdi inc rax jmp copy_line_to_string .finish: mov byte [rsi], 0 ret ;;; rdi should contain the source to copy from ;;; rsi should contain the destination pointer ;;; dl should contain the delimiter copy_until_token_to_string: mov rax, 0 .start: cmp byte [rdi], dl jz .finish mov r8, [rdi] mov [rsi], r8 inc rsi inc rdi inc rax jmp copy_until_token_to_string .finish: mov byte [rsi], 0 ret ;;; rdi should contain the string to measure string_length: mov rax, 0 .start: cmp byte [rdi], 0 jz .finish inc rdi inc rax jmp string_length .finish: ret