Makefile done, main to test, ft_strlen done
This commit is contained in:
commit
7eb59b5c03
38
Makefile
Normal file
38
Makefile
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
CC := gcc
|
||||
AS := nasm
|
||||
ASFLAGS := -g -Wall
|
||||
CFLAGS := -g -Wall -Wextra -Wno-override-init -std=c2x
|
||||
MAIN := $(wildcard *.c)
|
||||
SRC := $(wildcard src/*.s)
|
||||
OBJ_DIR := build
|
||||
OBJ_CC := $(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o, $(MAIN)))
|
||||
OBJ_AS := $(addprefix $(OBJ_DIR)/, $(patsubst %.s,%.o, $(SRC)))
|
||||
DIR := .
|
||||
NAME := main
|
||||
LIB_NAME:= asm
|
||||
|
||||
LD := $(CC)
|
||||
LDFLAGS := -L$(OBJ_DIR) -l$(LIB_NAME)
|
||||
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
$(NAME): $(OBJ_CC) $(OBJ_AS)
|
||||
ar rcs $(OBJ_DIR)/lib$(LIB_NAME).a $(OBJ_AS)
|
||||
$(LD) $(OBJ_CC) $(LDFLAGS) -o $(DIR)/$(NAME)
|
||||
|
||||
$(OBJ_DIR)/%.o: %.c
|
||||
@mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: %.s
|
||||
@mkdir -p $(@D)
|
||||
$(AS) $(ASFLAGS) -f elf64 $< -o $@
|
||||
|
||||
clean:
|
||||
@rm -f $(NAME)
|
||||
@rm -rf $(OBJ_DIR)
|
||||
|
||||
re:
|
||||
@make --no-print clean
|
||||
@make --no-print all
|
||||
7
main.c
Normal file
7
main.c
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#include "main.h"
|
||||
|
||||
int main(void) {
|
||||
size_t size = ft_strlen("test\n");
|
||||
printf("size: %ld\n", size);
|
||||
return 0;
|
||||
}
|
||||
6
main.h
Normal file
6
main.h
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
extern size_t ft_strlen(const char *s);
|
||||
29
src/ft_strlen.s
Normal file
29
src/ft_strlen.s
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
bits 64
|
||||
|
||||
%define STDOUT 1
|
||||
%define SYS_WRITE 1
|
||||
%define SYS_EXIT 60
|
||||
|
||||
section .text
|
||||
global ft_strlen
|
||||
ft_strlen:
|
||||
|
||||
; empilement
|
||||
push rbp
|
||||
|
||||
; code
|
||||
mov rbx, rdi
|
||||
mov rsi, -1
|
||||
|
||||
loop:
|
||||
inc rsi
|
||||
mov al, [rbx + rsi]
|
||||
cmp al, 0
|
||||
jne loop
|
||||
|
||||
; rétablissement
|
||||
pop rbp
|
||||
|
||||
; return
|
||||
mov rax, rsi
|
||||
ret
|
||||
Loading…
Reference in a new issue