From edc5325a33a012ed62c50a049b076108f3b8edca Mon Sep 17 00:00:00 2001 From: wullie Date: Mon, 26 Oct 2026 18:55:09 +0000 Subject: [PATCH] basic memory functions --- build/ConversionNamespace.o | Bin 0 -> 1584 bytes build/RandomNamespace.o | Bin 0 -> 1328 bytes build/brk.o | Bin 0 -> 1384 bytes build/closeOpen.o | Bin 0 -> 1984 bytes build/exithandle.o | Bin 0 -> 2304 bytes build/main.o | Bin 0 -> 4520 bytes build/mkdir.o | Bin 0 -> 1456 bytes build/printing.o | Bin 0 -> 3240 bytes build/printingNamespace.o | Bin 0 -> 1400 bytes build/randcoice.o | Bin 0 -> 1448 bytes build/readWrite.o | Bin 0 -> 1896 bytes build/syscall.o | Bin 0 -> 1664 bytes build/time.o | Bin 0 -> 1728 bytes build/typeConvert.o | Bin 0 -> 3864 bytes build/xorshift.o | Bin 0 -> 1608 bytes buildSoLib | 73 ++++++++++++++++++++++++++ include/LocalHeader.h | 1 + include/stdWullie.h | 3 +- include/stdWullie/definitions/int.h | 21 +++++--- include/stdWullie/memory/brk.h | 15 ++++++ include/stdWullie/namespaces/random.h | 2 +- src/main.c | 2 +- src/memory/brk.c | 37 +++++++++++++ 23 files changed, 145 insertions(+), 9 deletions(-) create mode 100644 build/ConversionNamespace.o create mode 100644 build/RandomNamespace.o create mode 100644 build/brk.o create mode 100644 build/closeOpen.o create mode 100644 build/exithandle.o create mode 100644 build/main.o create mode 100644 build/mkdir.o create mode 100644 build/printing.o create mode 100644 build/printingNamespace.o create mode 100644 build/randcoice.o create mode 100644 build/readWrite.o create mode 100644 build/syscall.o create mode 100644 build/time.o create mode 100644 build/typeConvert.o create mode 100644 build/xorshift.o create mode 100755 buildSoLib create mode 100644 include/stdWullie/memory/brk.h create mode 100644 src/memory/brk.c diff --git a/build/ConversionNamespace.o b/build/ConversionNamespace.o new file mode 100644 index 0000000000000000000000000000000000000000..74385662c5d663703180eaddb9e75cf918a721e4 GIT binary patch literal 1584 zcmbtU!A=xG5Up83Ksmrk5=j^jMvU0m9mxhfkV!VUAu&V_#Pcvr6l7;MGmXkgKZJuv zKZ8%;Q{W4<-b|I->FjubO1kUSt5?%C-97VT_x-z05Rh6xJ2Z)uCF(wy;JAh{Ez;u& zc~>+X4Bm$8!~MgTVXto@(+i_+)bDQfy7d!hcn*2Y@?a5lD7XTr7Dzm;XVt(XKSQ^F zTn_jNk7drN#RAsYFDdEx=PmrJ7Cvg>w_EtQg&(%?G$`_~Sy`PF`F=9Ws&SHLCZ)7y zEuD|YSxINbH=g%$%VOH=Z^9kEiE7tGC%OHQlohKy!@fC3PxF#*_H!cEy#kN3Qd!L>8h#mFW{WGY)W{<9*ReYa$e6Pu7Zswy&Nc9zsJ zkSPl?X)zjQIji!*W`-}=>&hnS7l}XR=Vn|MyoL6{UGpCJDcAaYfyc#|rWmxYJ>vkJ zdnU-on5LLt|AIBx*SpsDxb}bR$DDU9bOXj4Jn*%}JX~ApG|_J%amLW;9ngEU!yMLc z{tgVpeu`gJLcG4edVEKUUFoG8IM~;I-GJyFaFt~H*_HO>_g*5cEKr5XFPxU}E%IN)^;n(yj@dd<7rF$KaKG z0-Y%{u-Tvoon$-TeDh6r_NRTjxW3Fe4v0BWgJ~ozKq)uHUIsl_gViZ%qei`cUOZ?t zZx4&*igH!C=$70{sah^&$~-=cIOcJn2y)Ycb7gvOK^r2gj& za*6SHUDJg0Og!z`#8f(rwBG`i>SXLYf^<00pxVCnLABBpR1&`USxiVJF{mJpqOgam zUaUif2XUNgKX~T&vG=O_N!$+;J)BJVKd_DEw1x%iHJ%kqNLtf&F(A&|Gs=7Pm|=GP zK5A%>|5{(h+TZ4vdnT>Oxk*g-iEgDQ1p5Iudd2ZFdeX^#koVS*BkA}nLcn&4cyDHY^P8EMH%U&mcXtwo0U`!$LgWbwu$+kO zVqg|w2GX!^_3o|H$BfncHMD+j53SzqbsFP;iDR7&j#F1u?qU3jfV&$gmr5Jva{252 zXEVR13My|Fa)q_rdOk-47{g`a8pnksNPsaQOwMFz{zr_F7(e&G=wys+I`yHCIX62e0c@ z?Rq^Q#1@%B&r0k0B@~l!y8e+704T59@a+m}-wpMVSgupImG5+XP(N(n237GqP}NqW z;WQCzwtPq7-L87RU9GWy*gRHkx7BuBzY8j;;2eEFaP5Y}CwQMSF`e#qLMu~bU+zu9 zGH>y-XwbbB1z>%_#0B=JP!l9G7JP~EB=bbI#n80ge+A=I^MCVc%2ZQ-PU$c2DpCTG z{-QS!6`Lu6`ZMZ`*gE$M#^_!B=N&@7&pGIAL`Dpg;UL&plLt}`vlt|#iATbHC{%@>Y~5zeOYD{g3S zh;=DeO3TYs2=h9Ww_LTQ*pR;ERqFxL|5N~2T3DD9Q%ftQn<6)>=k=V(&*W!k?&M~W zPuC}K(M4bgWI+2s7~i#)I$uQ}iMG22+ICi(7#$wj$KdOT(IRO>#^Br3JF-?a>`3rJxRPlOWpsdtrD24VpoL0i{Q1h$#E9f(xjL zOLt6iEmlD9jBpjMP=K#ptJg@^pGG(3{8xSsxs)?GV?4qUZ7933>h9b>19#CNKEG4O zAF4+Azk+e@pY;R9XFuyQ2QZ*?8eT(u7+1RgiV95kmG1u;aw#;;KT!N9=u1kPPp`1w z{14PXxIWGQJTB(*{QK3WdTmwz8y!$aaZ#N#pK_*Wj}RQH52E=bMWyXRm(c3VS76YM IjEyw^H~8!9oB#j- literal 0 HcmV?d00001 diff --git a/build/exithandle.o b/build/exithandle.o new file mode 100644 index 0000000000000000000000000000000000000000..a083c2705cc89cc71287fcdd51d83675bf8ea953 GIT binary patch literal 2304 zcmbtU-Afcv6hEt$W-8kk6c*j5sK{a0$V@_3Wpy4b!xW^5Wn4#hbHA7wSvQaZAy`C` z=ppED=%KgXl!AJb=%v3P2>g-UsSiv>X*Gwn|lmDWzBWph3z%=?+N^h zR0(xSHXgk1zJE2ICwn>TWeW?U=X+N z1ELmG@9br4#};MF6;?smj#G5niN;1o2E@g&+tZgsywB)0;-WX!+ZXGP$B0^Z+kywq zh&`x@B3s~8Pa>Lrl5Ifb(IiEdqmk~8*0v3HKF!=&-$HaAa;Pi%v}vUCFi&CY2gi7h zPsoOtDR7K)_$b>9Cx(6iP+trE+G}KPu2o-eZT5Fr&vmhSJml}!&fEze(Rx>3L%r}< ze*S)#yTGH7KkjBDepu#t!xHfKjtMS9#wyI^Y$NR}>tb!??@C_Jzan{+Ur4=rfd324U*&(L@zLSFey@EoY0dN@Ve$0SmC|>oO47ZZ^tXY0&<54*?m4qGucY&-S>Um0pzkLSf0^ccf%HUWH?j$i-rhZ{__ns*dl2rdWI6!VIQ22X{N2B;QJgy8c5Vfx!{|A5{E9?LO literal 0 HcmV?d00001 diff --git a/build/main.o b/build/main.o new file mode 100644 index 0000000000000000000000000000000000000000..bd4f37385fffa29f2737bb81db0323608c00d86a GIT binary patch literal 4520 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 literal 0 HcmV?d00001 diff --git a/build/randcoice.o b/build/randcoice.o new file mode 100644 index 0000000000000000000000000000000000000000..53646999037ee7b568b1b459f765bd913b3f6d7a GIT binary patch literal 1448 zcmbtU&ubG=5S~qI>yJiK@gUa2p2VMzB!{;4AW6d}L4pNsjs-{ML1Qg8J?@FMh(OHX^CO+atAH4l$zWHY6W#?_)T8(PPFhG_84`Jd7 z3((0->{4QuAPY;-tVciUhXXTuGl=$2>+v~?)ngc)#Ld&Y&B5VkBl`A{$e(AiH84&h zYZzO@uV0{6sce|HYLA<@&BCfGs)AX}7gzJ^g*>U}ahtfQ9%>*1#wX(BY=-7v#TYH) z^%F1-a>mNi;`t*K-$0Hwtq1fdU(UVDRI&>p3dsM$XPrDPIss6zihjzo!Gut>5vO{t+BOPZrEGZ>Qigm-Y#!8ESn_&%Ut;m zBE7TWXuM43X?#;71W>)c7dkD(Fc@P;tiauMROlXrpmv`&3orczH!vW! zXb9g=J5#oBP`t*J3v!~!M7Vf6Xv7zVx1_cOs AumAu6 literal 0 HcmV?d00001 diff --git a/build/readWrite.o b/build/readWrite.o new file mode 100644 index 0000000000000000000000000000000000000000..a19cec82e510da25bee8a6936c1a5d65abcb4205 GIT binary patch literal 1896 zcmb_cPiqrV5T8wItJu^i3PMHRsVeA_L?~56w}!NPP!ENmH+kJ`Of|`dw;ODPqEHk< z6!KC01_lI0@Zgsaa_~@Z9)vox`zG0J;-&Nl@6F6_{=9jamwjD&u#qwhU>I;0#ul>x z!}M6ULe+vL$Uxcd{~48z@9zzvea8N9f&%UC*I_7o4~KTId|>xV z82RNBaiOFC?eo#AP_JBtDmt<$nqDAUQu(gP38yBNbOKlTd(3p(1e66)_G{U<`=k-_A(b=g~(nUTuM~ zn>Cgf7f$vu_!4ro2phDmFJ<4QikbP;Iz~jkJH#Vq`6JKtPJPV5@55;iKzh{Wq&FSj zW|GUGc`gd<0X zT48>4U(@e20=W&QAE-#ySW|9Ynt{6;fLW1&1asT>!Bk#kI9{XSHqnRA+cojc-S7kH zywLWuX4`BjujQ(sgE>^mtv#(O*}&&~3=mj@-W1(E4oe&F<0R_*KVW(p6`Fy?gq9!m zkJi`rX_S}c!2jygR%whrvr>DkfubHjFI9U^hK`0Wo%!!C3(yt z%tai-IM4<;FuoGU@5a#T3#d^Tub+akIcZE!jGp>{=8MSDptwSh$7d(s<*H{!UZ4R> z(jF3zag!dbuVngj;xUrFvA&+^Z&Dd%DYG7=x|EJ3I>!+FJUS*Ik?)@}Q^yfbDSUDk z@d0uc3fv+1>vYqdj9;OBBX z2;KU+tXEqdvEjEjJU{G$@V$mBytS7rzT5QV;{TDRv6t?0M4Q8u^=FMIuNs%JATFHRdXes|RJUao(K3MJ&Uedau(LHz|uuJ)ZN(EEP_jU~2{ literal 0 HcmV?d00001 diff --git a/build/time.o b/build/time.o new file mode 100644 index 0000000000000000000000000000000000000000..1563f7182e9afde5f640f83f848447b7709b94a5 GIT binary patch literal 1728 zcmbVM&ubG=5S~rb)*r1z?V(Z+3!+r3k0e5oA`%H}A0i%#K~W^xBwG`@NlJDLjUW~T zAq1gUZyvpR55+(l-y%MoroM^pRw@zOyDu_GPa?vQxpv z2C}f2&o7v>i+2kb&CI;Wij0{}XXn$`GHH?kNTQqQqv%)#2{5(^FpJ#Q2d-EIx}EIa!H5Zk|ZJOynoW5|6MVdis<3o>a@Y@coo}qvrsI0zFk=< zR%$E7WxMXeTC=`>4~s(qOX<+rlKZNx? zHXR1IfRXUX-$TIsQM?}X`IoVPG!NUK!Cul-KU>T~Mo?MAJ=0c-&gvrNxjVH|rui^facNEe=$h8#b+ocf zB`AG_LP3NIeo#~p_F*uwjNwLJbZadgX8OT`C}UK3Yl9$`C6%yw&VBc$={0vC_P~Aj zoZtC#&pqef_ma2G7oXELjR?}nGh|&7C?Sj6*7-1F!(=uSzhUcXtX!a7Sr+&cfu@Y%(%g0YnP4QLJg@BzZ@KtBcGA^D@70754t~*U9??L2ZT|^OgN{9i#hHWRTt;D%h9LN4mu5ri zVu^|RhKva@@^tV=FUE4fz6>!wvgd+O!~)A|I-M#L>)wC6Lxy{#jG>4np1*yO+CRIP zKHtUnUd>_mUPD>Y`Sxi#<=$fdzhM+K@!RhK%ZosZ-R{a5&2+l-ET)e{?KxUprq16w za!zR<4d$qwr%(*4<*AmXL5JG&c3xGGn&B`&NvF=*KJcZ%JRCvSOZnYRFHY^Fk&p^q zIU1iqJu;mId;ZL&g@py`Kb2!AA?GanD)$2pz%6zRN5IZ)@OE6EX#VG$zCTs-Q>q=F z!sfFk;|`Hnldn?P;(u%{bnR>!{8giFSg>8-2P2avbl_9aZ_vD(tUIxahOS>n!pV`0EP%YXyEmf&Zkyf91HG|B}Lf2k$$ok$n&b zQj-EdtiV51;9n^4uN3$>j?4Lfr?CG^!rQ&{$qfZ=VqhS#UtynC;2$XPPZjt{j^k8) zeoiaw1DFgD=EGaW;w4J$Tg5#zO}6(vSbGD(cy;h~{e9I*JX6*J%)v?pmrd*9%4e|*#!Neqv`Yh;`l zEJAGH)xJb@D8@7Re^UV5@d|E{!i2eehSy!F`E?Z{*##V$ge!>0ENHQiIC?R6~rgeyMVtq01 z1yu0WraRdmhHAv)W!vWg#!^+EU9@cE{&HTTerSW#0|R5q{*?PKqEQve{@tLf**|O; z(3Ce36wz1si~iMG8(jkYKy~pAgb-l6{pKR^8_RFPc29iXe_KfwRT9esECLKFCuBpnzGw=NwSdjq96#R zmp%IDRQ9wt{{RoY2t9aMVGnyKtTQj~CE=O9hy(NHH^2FKlT7l_e)hPeX&^;|N051v z1z4KPu*IPTRj5GA8UA!W|I(+#4ei;;o_(8C%>+!B1(+-(;9y_LKNNLGqt@ZbKGMDq z$Ij3`c1Eb!$1x?ImNPuLAo0OItT&sh#?AHTty_lKV0C61^;*4AyKmO`l=FBRs0*l= z1SQbM#K~vW6#o*&NVE?xL5p>5rBYtn!{n>Tk&^JvYv=VZrDk<;6BCf5*h31Uyr4tI zOHY#o;tGW3n1|md1tFMAr_7=igcoys@{|CVk=L`d6kQYfGLO$j(RdJqes?2c9f&!& zTZf%~H-6Rad4g%&12`i((K{oZoh0($6n^a#-Vl5VEvXbs0LjZafrY!h$ZeyIg2eg~ z1>Tm+A}@}By>lZMSUU`Xbq2kj*GH~Dh&+b7z7s}nXH)p^`#Wqq7;Jk%viMtrCe~8Vbbp9R#{A6w9pUm^!g7w)9F{p`f8?DUmUWVPf}o6=|F$SL zp#w#oOTND(3eZMCJ=J<$T=ZHd3ai$?LB42zzGx`#r~Of_te5*Mx|^=@#r=EapqxXc k9jW#7pQ^h<3XVnn4RUfK=#*JTR8;>}%)gapCP1zK18&W#w*UYD literal 0 HcmV?d00001 diff --git a/buildSoLib b/buildSoLib new file mode 100755 index 0000000..3b4bfa1 --- /dev/null +++ b/buildSoLib @@ -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 diff --git a/include/LocalHeader.h b/include/LocalHeader.h index 190ec58..44117bf 100644 --- a/include/LocalHeader.h +++ b/include/LocalHeader.h @@ -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 diff --git a/include/stdWullie.h b/include/stdWullie.h index e3d7906..6900f67 100644 --- a/include/stdWullie.h +++ b/include/stdWullie.h @@ -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" diff --git a/include/stdWullie/definitions/int.h b/include/stdWullie/definitions/int.h index fb8635a..6c2c9b0 100644 --- a/include/stdWullie/definitions/int.h +++ b/include/stdWullie/definitions/int.h @@ -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,10 +22,14 @@ 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 -#define ULL unsigned long long +#define U unsigned +#define LL long long +#define ULL unsigned long long // int max values #define INT8_MAX ((int8_t)0x7F) @@ -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 diff --git a/include/stdWullie/memory/brk.h b/include/stdWullie/memory/brk.h new file mode 100644 index 0000000..c89c30c --- /dev/null +++ b/include/stdWullie/memory/brk.h @@ -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 diff --git a/include/stdWullie/namespaces/random.h b/include/stdWullie/namespaces/random.h index 8990380..422052e 100644 --- a/include/stdWullie/namespaces/random.h +++ b/include/stdWullie/namespaces/random.h @@ -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; diff --git a/src/main.c b/src/main.c index 549850f..a7470da 100644 --- a/src/main.c +++ b/src/main.c @@ -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(); diff --git a/src/memory/brk.c b/src/memory/brk.c new file mode 100644 index 0000000..08370e8 --- /dev/null +++ b/src/memory/brk.c @@ -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; +}