basic memory functions

This commit is contained in:
wullie committed 2026-10-26 18:55:09 +00:00
1 parent 79bc676f49
commit edc5325a33
23 files changed
+142 -6

No files matched your search

Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Executable
+73
View File
@@ -0,0 +1,73 @@
#!/bin/bash
set -e
CC="gcc"
CFLAGS="-DWRATHINT -I./include -fPIC"
OBJ_BUILD="build/"
BIN_DIR="bin/"
HED_DIR="include"
build() {
echo "Building stdWullie..."
# Find all C source files
mapfile -t SRC < <(find src -type f -name '*.c')
# Compile each source file
OBJ=()
for src in "${SRC[@]}"; do
obj="${src%.c}.o"
echo "Compiling $src -> $obj"
"$CC" $CFLAGS -c "$src" -o "$obj"
OBJ+=("$obj")
done
# Create output directories
mkdir "$OBJ_BUILD"
mkdir "$BIN_DIR"
# Link shared library
echo "Linking libstdWullie.so..."
"$CC" -nostdlib -shared -o libstdWullie.so \
-fno-stack-protector \
"${OBJ[@]}"
# Move object files
mv "${OBJ[@]}" "$OBJ_BUILD"
# Move library
mv libstdWullie.so "$BIN_DIR"
# Copy header
cp "$HED_DIR/stdWullie.h" "$BIN_DIR"
# Copy header directory
cp -r "$HED_DIR/stdWullie/" "$BIN_DIR"
echo "Build complete."
}
clean() {
echo "Cleaning..."
rm -rf "$OBJ_BUILD" "$BIN_DIR"
build
}
case "${1:-build}" in
build|stdWullie)
build
;;
clean)
clean
;;
*)
echo "Usage: $0 {build|stdWullie|clean}"
exit 1
;;
esac
+1
View File
@@ -12,6 +12,7 @@
#define SYS_write 1
#define SYS_open 2
#define SYS_close 3
#define SYS_brk 12
#define SYS_sleep 35
#define SYS_exit 60
#define SYS_mkdir 83
+2 -1
View File
@@ -6,7 +6,6 @@
#define STDWULLIE_H
// import everything
//types
#include "stdWullie/definitions/int.h"
#include "stdWullie/definitions/typeNull.h"
@@ -29,6 +28,8 @@
#include "stdWullie/filehandle/readWrite.h"
#include "stdWullie/filehandle/mkdir.h"
// # i cant believe its just a burning memory#
#include "stdWullie/memory/brk.h"
// string
#include "stdWullie/String/colours.h"
+12 -3
View File
@@ -4,8 +4,8 @@
//defined like stdint to avoid confilict
#ifndef _STDINT_H
#define _STDINT_H 1
#ifndef _STDWULLIEINT_H
#define _STDWULLIEINT_H 1
// create the types for signed ints using base structures
typedef signed char int8_t;
@@ -22,6 +22,10 @@ typedef unsigned long long int uint64_t;
// misc int types
typedef unsigned long size_t;
// intptr
typedef long int intptr_t;
typedef unsigned long int uintptr_t;
// macros for long long, unsigned and unsigned long long
#define U unsigned
#define LL long long
@@ -50,5 +54,10 @@ typedef unsigned long size_t;
#define INT16_MIN ((int16_t)(-INT16_MAX - 1))
#define INT32_MIN ((int32_t)(-INT32_MAX - 1))
#define INT64_MIN ((int64_t)(-INT64_MAX - 1))
#endif
// intptr and uintptr min and max because its just a fucking int
#define INTPTR_MIN (INT64_MIN -1)
#define INTPTR_MAX (INT64_MAX)
#define UINTPTR_MIN (UINT64_MIN)
#define UINTPTR_MAX (UINT64_MAX)
#endif
+15
View File
@@ -0,0 +1,15 @@
// this code is licenced under Wrathmark licence
// © 2026 wullie wulliestudio.com
// please see attached licence for full usage and rights
#ifndef WRATHBRK_H
#define WRATHBRK_H
#include "stdWullie/definitions/int.h"
// just give me a brk
int brk(void *address);
void *sbrk(intptr_t addrIncrament);
#endif
+1 -1
View File
@@ -10,7 +10,7 @@
typedef struct{
uint32_t (*xor32)(void);
uint64_t (*xor64)(void);
int (*choice)(int min, int max)
int (*choice)(int min, int max);
}RandomNameSpace;
extern const RandomNameSpace random;
+1 -1
View File
@@ -3,7 +3,7 @@
// please see attached licence for full usage and rights
#include "LocalHeader.h"
#include "stdWullie.h"
#define WRATHINT 1
// decleration for random
int randomTest();
+37
View File
@@ -0,0 +1,37 @@
// this code is licenced under Wrathmark licence
// © 2026 wullie wulliestudio.com
// please see attached licence for full usage and rights
#include "stdWullie/memory/brk.h"
#include "stdWullie/exit.h"
#include "LocalHeader.h"
int brk(void *address){
long result = syscall1(SYS_brk, (long)address);
if((void*)result == address){
return 0;
}
return -1;
}
void *sbrk(intptr_t incrament){
// gets the last break point and checks whether we just wanted that or do something else
void *prevBrk = (void *)syscall1(SYS_brk, 0);
if(incrament == 0){
return prevBrk;
}
// something else
void *newBrk = (char *)prevBrk + incrament;
long result = syscall1(SYS_brk, (long)newBrk);
if((void *)result != newBrk){
safeError("FAULT IN ALLOCATING NEW BREAK");
}
// pointer to the start of the new memory
return prevBrk;
}