This commit is contained in:
nub31
2025-09-03 18:31:10 +02:00
parent 0583c8c1a3
commit f05e7c9e64
31 changed files with 164 additions and 163 deletions

View File

@@ -1,5 +1,29 @@
#pragma once
typedef __builtin_va_list va_list;
#define va_start(ap, last) __builtin_va_start(ap, last)
#define va_arg(ap, type) __builtin_va_arg(ap, type)
#define va_end(ap) __builtin_va_end(ap)
#define va_copy(dest, src) __builtin_va_copy(dest, src)
#define bool _Bool
#define true 1
#define false 0
#define __bool_true_false_are_defined 1
#ifndef NULL
#define NULL ((void*)0)
#endif
typedef unsigned long size_t;
typedef long ptrdiff_t;
typedef long intptr_t;
typedef unsigned long uintptr_t;
#define offsetof(type, member) __builtin_offsetof(type, member)
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;

View File

@@ -1,9 +1,4 @@
#include "../arch/api.h"
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include "arch.h"
void printf(const char* fmt, ...)
{
@@ -20,20 +15,20 @@ void printf(const char* fmt, ...)
if (fmt[i] == '%')
{
put_char('%');
arch_putchar('%');
}
else if (fmt[i] == 's')
{
const char* str = va_arg(args, const char*);
for (size_t j = 0; str[j] != '\0'; j++)
{
put_char(str[j]);
arch_putchar(str[j]);
}
}
else if (fmt[i] == 'c')
{
char character = (char)va_arg(args, int64_t);
put_char(character);
arch_putchar(character);
}
else if (fmt[i] == 'd')
{
@@ -42,7 +37,7 @@ void printf(const char* fmt, ...)
itoa64(val, buf);
for (size_t j = 0; buf[j] != '\0'; j++)
{
put_char(buf[j]);
arch_putchar(buf[j]);
}
}
else if (fmt[i] == 'u')
@@ -52,7 +47,7 @@ void printf(const char* fmt, ...)
uitoa64(val, buf);
for (size_t j = 0; buf[j] != '\0'; j++)
{
put_char(buf[j]);
arch_putchar(buf[j]);
}
}
else if (fmt[i] == 'x')
@@ -62,12 +57,12 @@ void printf(const char* fmt, ...)
uitoa64_hex(val, buf);
for (size_t j = 0; buf[j] != '\0'; j++)
{
put_char(buf[j]);
arch_putchar(buf[j]);
}
}
else
{
put_char(fmt[i]);
arch_putchar(fmt[i]);
}
}
else if (fmt[i] == '%')
@@ -76,7 +71,7 @@ void printf(const char* fmt, ...)
}
else
{
put_char(fmt[i]);
arch_putchar(fmt[i]);
}
}

9
src/stdlib/mem.c Normal file
View File

@@ -0,0 +1,9 @@
#include "mem.h"
void memset(void* destination, uint8_t value, size_t length)
{
for (size_t i = 0; i < length; i++)
{
((uint8_t*)destination)[i] = value;
}
}

5
src/stdlib/mem.h Normal file
View File

@@ -0,0 +1,5 @@
#pragma once
#include "std.h"
void memset(void* destination, uint8_t value, size_t length);

View File

@@ -1,8 +0,0 @@
#pragma once
typedef __builtin_va_list va_list;
#define va_start(ap, last) __builtin_va_start(ap, last)
#define va_arg(ap, type) __builtin_va_arg(ap, type)
#define va_end(ap) __builtin_va_end(ap)
#define va_copy(dest, src) __builtin_va_copy(dest, src)

View File

@@ -1,7 +0,0 @@
#pragma once
#define bool _Bool
#define true 1
#define false 0
#define __bool_true_false_are_defined 1

View File

@@ -1,12 +0,0 @@
#pragma once
#ifndef NULL
#define NULL ((void*)0)
#endif
typedef unsigned long size_t;
typedef long ptrdiff_t;
typedef long intptr_t;
typedef unsigned long uintptr_t;
#define offsetof(type, member) __builtin_offsetof(type, member)

View File

@@ -1,14 +1,6 @@
#include <string.h>
#include "string.h"
void memset(void* destination, uint8_t value, size_t length)
{
for (size_t i = 0; i < length; i++)
{
((uint8_t*)destination)[i] = value;
}
}
int strcmp(const char* a, const char* b)
int kstrcmp(const char* a, const char* b)
{
while ((*a != '\0' && *b != '\0') && *a == *b)
{

View File

@@ -1,11 +1,8 @@
#pragma once
#include <stddef.h>
#include <stdint.h>
#include "std.h"
void memset(void* destination, uint8_t value, size_t length);
int strcmp(const char* a, const char* b);
void reverse(char* str, size_t length);
void uitoa64(uint64_t value, char* buffer);
void itoa64(int64_t value, char* buffer);
void uitoa64_hex(uint64_t value, char* buffer);