diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-02-06 00:29:09 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-02-06 00:29:09 +0100 |
| commit | 0e73aff73d301aac59dd604f6137969c3e2403ce (patch) | |
| tree | adceee473f511c1286128d10f7ac704d4ba2c6f6 | |
| parent | 6808cd0fbd3edf68422228d2ee6a41ad70f971d5 (diff) | |
| download | libasm-0e73aff73d301aac59dd604f6137969c3e2403ce.tar.gz libasm-0e73aff73d301aac59dd604f6137969c3e2403ce.tar.bz2 libasm-0e73aff73d301aac59dd604f6137969c3e2403ce.zip | |
read write protection, ft_list_size, ft_list_push_front finished
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | README.md | 18 | ||||
| -rw-r--r-- | ft_list_push_front.s | 23 | ||||
| -rw-r--r-- | ft_read.s | 12 | ||||
| -rw-r--r-- | ft_write.s | 14 |
5 files changed, 64 insertions, 7 deletions
@@ -6,7 +6,7 @@ # By: cacharle <marvin@42.fr> +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2019/11/22 02:56:22 by cacharle #+# #+# # -# Updated: 2019/11/25 04:46:29 by cacharle ### ########.fr # +# Updated: 2020/02/05 21:15:19 by cacharle ### ########.fr # # # # **************************************************************************** # @@ -22,7 +22,7 @@ NASMFLAGS = -f macho64 NAME = libasm.a ASMSRC = ft_strlen.s ft_strcpy.s ft_strcmp.s ft_write.s ft_read.s \ ft_strdup.s ft_atoi_base.s ft_list_push_front.s \ - ft_list_size.s ft_list_sort.s ft_list_remove_if.s + ft_list_size.s #ft_list_sort.s ft_list_remove_if.s ASMOBJ = $(ASMSRC:.s=.o) all: $(NAME) diff --git a/README.md b/README.md new file mode 100644 index 0000000..c7af14f --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# libasm + +libasm project of school 42. + +## Test + +Clone the test [repository](https://github.com/HappyTramp/libasm_test) next to this project folder. + +``` +. +|- libasm +|- libasm_test +``` + +``` +cd libasm_test +make run +``` diff --git a/ft_list_push_front.s b/ft_list_push_front.s index 686ee10..6a95909 100644 --- a/ft_list_push_front.s +++ b/ft_list_push_front.s @@ -10,13 +10,28 @@ ; ; ; **************************************************************************** ; +extern _malloc + global _ft_list_push_front ; void ft_list_push_front(t_list **begin_list, void *data); _ft_list_push_front: - cmp rdi, 0 - je FT_LIST_PUSH_FRONT_END - mov [rsi + 8], [rdi] - mov [rdi], rsi + cmp rdi, 0 + je FT_LIST_PUSH_FRONT_END + + push rdi + push rsi + xor rdi, rdi + mov edi, 16 + call _malloc + pop rsi + pop rdi + cmp rax, 0 + je FT_LIST_PUSH_FRONT_END + + mov qword [rax + 0], rsi + mov r10, [rdi] + mov [rax + 8], r10 + mov [rdi], rax FT_LIST_PUSH_FRONT_END: ret @@ -14,6 +14,18 @@ global _ft_read ; int ft_read(int, void*, size_t); _ft_read: + cmp rdx, 0 + je FT_READ_NO_SIZE + cmp rdi, 0 + jl FT_READ_ERROR + cmp rsi, 0 + je FT_READ_ERROR mov rax, 0x2000003 syscall ret +FT_READ_ERROR: + mov rax, -1 + ret +FT_READ_NO_SIZE: + xor rax, rax + ret @@ -12,8 +12,20 @@ global _ft_write -; int ft_write(int, const void*, size_t); +; int ft_write(int rdi, const void *rsi, size_t rdx); _ft_write: + cmp rdx, 0 + je FT_WRITE_NO_SIZE + cmp rdi, 0 + jl FT_WRITE_ERROR + cmp rsi, 0 + je FT_WRITE_ERROR mov rax, 0x2000004 syscall ret +FT_WRITE_ERROR: + mov rax, -1 + ret +FT_WRITE_NO_SIZE: + mov rax, 0 + ret |
