stuff
This commit is contained in:
parent
8e66148582
commit
3efbeb3903
6 changed files with 47 additions and 45 deletions
|
|
@ -2,5 +2,6 @@
|
|||
|
||||
int main(void)
|
||||
{
|
||||
return (ft_puts("h2g2"));
|
||||
ft_puts("h2g2");
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
global _ft_memcpy
|
||||
global ft_memcpy
|
||||
|
||||
_ft_memcpy: ; void *ft_memcpy(void *dst, const void *src, size_t n)
|
||||
; void *ft_memcpy(void *dst, const void *src, size_t n)
|
||||
_ft_memcpy:
|
||||
ft_memcpy:
|
||||
push rdi
|
||||
cmp rdi, 0
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
global _ft_putchar
|
||||
global ft_putchar
|
||||
|
||||
section .bss
|
||||
char: resb 1
|
||||
section .data
|
||||
string: db "A"
|
||||
|
||||
section .text
|
||||
|
||||
|
|
@ -15,10 +15,10 @@ ft_putchar:
|
|||
push rdi
|
||||
|
||||
; int write(int fd, char *str, size_t len)
|
||||
lea rsi, [char] ; char *str
|
||||
lea rsi, [rel string] ; char *str
|
||||
mov [rsi], dil
|
||||
mov rdi, STDOUT ; int fd
|
||||
mov rdx, 1 ; size_t len
|
||||
mov rdi, STDOUT ; int fd
|
||||
mov rax, WRITE
|
||||
syscall
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,20 @@
|
|||
global _ft_puts
|
||||
global ft_puts
|
||||
|
||||
extern ft_strlen
|
||||
extern ft_putchar
|
||||
extern _ft_strlen
|
||||
extern _ft_putchar
|
||||
|
||||
%define STDOUT 1
|
||||
|
||||
section .data
|
||||
string db "(null)"
|
||||
string: db "(null)"
|
||||
.len: equ $ - string
|
||||
|
||||
section .text
|
||||
_ft_puts: ; int puts(const char *s)
|
||||
ft_puts:
|
||||
push rdi ; because strlen will clobber rdi
|
||||
call ft_strlen
|
||||
call _ft_strlen
|
||||
pop rdi
|
||||
cmp rax, 0
|
||||
je print_nl ; if empty string skip printing
|
||||
|
|
@ -26,20 +27,16 @@ print_string:
|
|||
mov rax, WRITE ; WRITE
|
||||
syscall
|
||||
cmp rax, 0
|
||||
jl error
|
||||
jl finish
|
||||
|
||||
print_nl:
|
||||
; xor rdi, rdi
|
||||
; add rdi, 0xa
|
||||
mov rdi, 0xa
|
||||
call ft_putchar
|
||||
call _ft_putchar
|
||||
cmp rax, 0
|
||||
jl error
|
||||
ret
|
||||
jl finish
|
||||
|
||||
success:
|
||||
mov rax, 0xa ; success returns '\n'
|
||||
ret
|
||||
|
||||
error:
|
||||
mov rax, -1 ; Return EOF (alias -1) on error
|
||||
finish:
|
||||
ret
|
||||
|
|
|
|||
|
|
@ -3,22 +3,24 @@ global ft_strdup
|
|||
|
||||
extern _malloc
|
||||
extern malloc
|
||||
extern ft_strlen
|
||||
extern ft_memcpy
|
||||
extern _ft_strlen
|
||||
extern _ft_memcpy
|
||||
|
||||
_ft_strdup: ; void *ft_strdup(const char *d)
|
||||
; void *ft_strdup(const char *d)
|
||||
_ft_strdup:
|
||||
ft_strdup:
|
||||
mov rax, 0
|
||||
cmp rdi, 0
|
||||
je end
|
||||
push rdi
|
||||
call ft_strlen
|
||||
call _ft_strlen
|
||||
inc rax
|
||||
push rax
|
||||
mov rdi, rax
|
||||
call malloc
|
||||
call _malloc
|
||||
cmp rax, 0
|
||||
je end
|
||||
|
||||
mov rdi, rax
|
||||
pop rcx
|
||||
pop rsi
|
||||
|
|
|
|||
|
|
@ -400,26 +400,26 @@ int test_strdup()
|
|||
}
|
||||
str = ft_strdup("Coucou");
|
||||
str_cmp = strdup("Coucou");
|
||||
len = strlen(str);
|
||||
len_cmp = strlen(str_cmp);
|
||||
if (len != len_cmp)
|
||||
{
|
||||
printf("FAILED: len is %d vs %d\n", len, len_cmp);
|
||||
return (1);
|
||||
}
|
||||
i = -1;
|
||||
while (++i < len)
|
||||
{
|
||||
if (str[i] != str_cmp[i])
|
||||
{
|
||||
ft_putnstr(str, len);
|
||||
ft_putnstr(str_cmp, len);
|
||||
printf("FAILED: %c vs %c\n", str[i], str_cmp[i]);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
free(str);
|
||||
free(str_cmp);
|
||||
/* len = strlen(str); */
|
||||
/* len_cmp = strlen(str_cmp); */
|
||||
/* if (len != len_cmp) */
|
||||
/* { */
|
||||
/* printf("FAILED: len is %d vs %d\n", len, len_cmp); */
|
||||
/* return (1); */
|
||||
/* } */
|
||||
/* i = -1; */
|
||||
/* while (++i < len) */
|
||||
/* { */
|
||||
/* if (str[i] != str_cmp[i]) */
|
||||
/* { */
|
||||
/* ft_putnstr(str, len); */
|
||||
/* ft_putnstr(str_cmp, len); */
|
||||
/* printf("FAILED: %c vs %c\n", str[i], str_cmp[i]); */
|
||||
/* return (1); */
|
||||
/* } */
|
||||
/* } */
|
||||
/* free(str); */
|
||||
/* free(str_cmp); */
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
|
@ -510,6 +510,7 @@ int main(int argc, char **argv)
|
|||
test_memcpy() ||
|
||||
test_strdup())
|
||||
return (1);
|
||||
exit(1);
|
||||
ft_putstr("\nPART BONUS:\n_______\n");
|
||||
if (test_isupper() ||
|
||||
test_islower() ||
|
||||
|
|
|
|||
Loading…
Reference in a new issue