Skip to content

cacharle/libasm

Repository files navigation

libasm

x86-64 assembly implementations of some standard C library functions. A 42 school project.

Functions

Mandatory

Function Prototype
ft_strlen int ft_strlen(char *s)
ft_strcpy char *ft_strcpy(char *dst, const char *src)
ft_strcmp int ft_strcmp(const char *s1, const char *s2)
ft_write int ft_write(int fd, const void *buf, size_t count)
ft_read int ft_read(int fd, void *buf, size_t count)
ft_strdup char *ft_strdup(const char *s)

Bonus

Function Prototype
ft_atoi_base int ft_atoi_base(const char *str, const char *base)
ft_list_push_front void ft_list_push_front(t_list **list, void *data)
ft_list_size int ft_list_size(t_list *list)
ft_list_sort void ft_list_sort(t_list **list, int (*cmp)())
ft_list_remove_if void ft_list_remove_if(t_list **list, void *ref, int (*cmp)(), void (*free_fct)(void *))

Build

make
make bonus

# Compile and link the test program
make test
./a.out

Usage

Link libasm.a against your C program:

#include <stdio.h>

int ft_strlen(char *s);
char *ft_strdup(const char *s);

int main(void)
{
    printf("%d\n", ft_strlen("hello"));  // 5
    char *dup = ft_strdup("world");
    printf("%s\n", dup);                 // world
    free(dup);
}
gcc main.c libasm.a -o main
./main

Requirements

  • NASM (Netwide Assembler)
  • GCC

Test

Tested with libasm_test.

About

libasm project of school 42

Topics

Resources

License

Stars

Watchers

Forks

Contributors