; **************************************************************************** ; ; ; ; ::: :::::::: ; ; ft_strdup.s :+: :+: :+: ; ; +:+ +:+ +:+ ; ; By: cacharle +;+ +:+ +;+ ; ; +;+;+;+;+;+ +;+ ; ; Created: 2019/11/22 03:04:32 by cacharle ;+; ;+; ; ; Updated: 2019/11/23 00:19:26 by cacharle ;;; ;;;;;;;;.fr ; ; ; ; **************************************************************************** ; extern ft_strlen extern ft_strcpy extern malloc global ft_strdup ; char *ft_strdup(const char *str); ft_strdup: push rdi ; save rdi because it will be overwrite for malloc call ft_strlen ; rdi is still == str inc rax ; len++ for '\0' mov rdi, rax ; size to malloc call malloc cmp rax, 0 je FT_STRDUP_ERROR pop rsi ; original str as src mov rdi, rax ; allocated as dest call ft_strcpy ret FT_STRDUP_ERROR: pop rdi ret