feat: ft_strcpy
This commit is contained in:
		
							parent
							
								
									c1a848d05b
								
							
						
					
					
						commit
						ff8d51b1c4
					
				
							
								
								
									
										6
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										6
									
								
								Makefile
								
								
								
								
							| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
NAME = libasm
 | 
			
		||||
 | 
			
		||||
SRC = ft_strlen.s
 | 
			
		||||
SRC = \
 | 
			
		||||
	ft_strlen.s \
 | 
			
		||||
	ft_strcpy.s \
 | 
			
		||||
 | 
			
		||||
OBJ = $(SRC:.s=.o)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -13,7 +15,7 @@ $(NAME): $(OBJ)
 | 
			
		|||
	ar rcs libasm.a $(OBJ)
 | 
			
		||||
 | 
			
		||||
test: $(NAME)
 | 
			
		||||
	gcc -Wall -Werror -Wextra main.c -L. -lasm -o libasm_unit_tests
 | 
			
		||||
	gcc -Wall -Werror -Wextra -g main.c -L. -lasm -o libasm_unit_tests
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm $(OBJ)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
global ft_strcpy
 | 
			
		||||
 | 
			
		||||
ft_strcpy:
 | 
			
		||||
	xor rax, rax
 | 
			
		||||
.loop:
 | 
			
		||||
	cmp byte [rsi + rax], 0
 | 
			
		||||
	je .done
 | 
			
		||||
	mov rdx, [rsi + rax]
 | 
			
		||||
	mov [rdi + rax], rdx
 | 
			
		||||
	inc rax
 | 
			
		||||
	jmp .loop
 | 
			
		||||
.done:
 | 
			
		||||
	mov rax, rdi 
 | 
			
		||||
	ret
 | 
			
		||||
							
								
								
									
										3
									
								
								libasm.h
								
								
								
								
							
							
						
						
									
										3
									
								
								libasm.h
								
								
								
								
							| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
ssize_t ft_strlen(const char *);
 | 
			
		||||
size_t ft_strlen(const char *);
 | 
			
		||||
char *ft_strcpy(char *, const char *);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								main.c
								
								
								
								
							
							
						
						
									
										11
									
								
								main.c
								
								
								
								
							| 
						 | 
				
			
			@ -1,6 +1,17 @@
 | 
			
		|||
#include "libasm.h"
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
	printf("%ld\n", ft_strlen("c'est moi la chaine de 36 caracteres"));
 | 
			
		||||
 | 
			
		||||
	char *str;
 | 
			
		||||
	str = (char *)malloc(150 * sizeof(char));
 | 
			
		||||
	str = "Salut c'est moi la zone mdr\0";
 | 
			
		||||
	char *dst;
 | 
			
		||||
	dst = (char *)malloc(50 * sizeof(char));
 | 
			
		||||
	char *test = ft_strcpy(dst, str);
 | 
			
		||||
	printf("%s\n", str);
 | 
			
		||||
	printf("%s\n", dst);
 | 
			
		||||
	printf("%s\n", test);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue