diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-11-22 00:11:46 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-11-22 00:11:46 +0100 |
| commit | 0931febe3e178b4e484259c9cdc79ef452208ae7 (patch) | |
| tree | a991e422cb6a1e98e03f951f3f3f962c3e9b5b42 | |
| parent | 3eae1d082fbd86d48a8f9ee2c57b8931a468cb59 (diff) | |
| download | libasm-0931febe3e178b4e484259c9cdc79ef452208ae7.tar.gz libasm-0931febe3e178b4e484259c9cdc79ef452208ae7.tar.bz2 libasm-0931febe3e178b4e484259c9cdc79ef452208ae7.zip | |
ft_strlen.s (i can kinda compile this shit)
| -rw-r--r-- | ft_strcpy.s | 12 | ||||
| -rw-r--r-- | ft_strlen.s | 24 | ||||
| -rw-r--r-- | main.c | 11 |
3 files changed, 29 insertions, 18 deletions
diff --git a/ft_strcpy.s b/ft_strcpy.s index 44a098d..2b7bbb9 100644 --- a/ft_strcpy.s +++ b/ft_strcpy.s @@ -2,10 +2,10 @@ _ft_strcpy: pop ax pop bx mov ecx, eax ; copy - FT_STRCPY_LOOP: - mov [ecx], ebx - inc ebx - inc ecx - cmp ebx, 0 - jneq FT_STRCPY_LOOP +FT_STRCPY_LOOP: + mov [ecx], ebx + inc ebx + inc ecx + cmp ebx, 0 + jneq FT_STRCPY_LOOP ret diff --git a/ft_strlen.s b/ft_strlen.s index 32eaf0c..82c0e34 100644 --- a/ft_strlen.s +++ b/ft_strlen.s @@ -1,12 +1,12 @@ -ft_strlen: - pop bx - mov eax, 0h -FT_STRLEN_LOOP: - mov ecx, [ebx] - cmp ecx, 0 - je FT_STRLEN_RET - inc eax - inc ebx - jmp FT_STRLEN_LOOP -FT_STRLEN_RET: - ret +.globl _ft_strlen + + _ft_strlen: + mov rbx, rdi # first argument in rbx + xor rax, rax # rax = 0 + FT_STRLEN_LOOP: + cmp byte ptr [rbx + rax], 0 # compare rbx[rax] and '\0' + je FT_STRLEN_RET + inc rax + jmp FT_STRLEN_LOOP + FT_STRLEN_RET: + ret @@ -2,11 +2,22 @@ int ft_strlen(char *); +/* extern void test(); */ + int main() { + /* extern say_hi(); */ + char *a = ""; + char *b = "a"; + /* printf("%d\n", sizeof(char*)); */ + /* printf("a: %p\n", (void*)a); */ + /* printf("b: %p\n", (void*)a); */ /* extern ft_strlen("bonjour"); */ + printf("%d\n", ft_strlen(a)); + printf("%d\n", ft_strlen(b)); printf("%d\n", ft_strlen("bonjour")); return 0; } + |
