From d767828cee67bae17b811062949653234aa14b28 Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Fri, 1 Dec 2023 22:20:07 -0600 Subject: shitty ptrs --- std/extern.sloth | 5 +++++ std/stdmem.c | 20 ++++++++++++++++++++ std/stdmem.sloth | 0 3 files changed, 25 insertions(+) create mode 100644 std/stdmem.c create mode 100644 std/stdmem.sloth (limited to 'std') diff --git a/std/extern.sloth b/std/extern.sloth index c970541..e99a6cc 100644 --- a/std/extern.sloth +++ b/std/extern.sloth @@ -26,3 +26,8 @@ foreign fn clientsock(port: Int, addr: String) Int; foreign fn closesock(soc: Int, server:Bool); foreign fn sendsock(msg: String, soc: Int); foreign fn recvsock(soc: Int) String; + +#stdmem +foreign fn memalloc(size: Int) Int; +foreign fn drefi(loc: Int) Int; +foreign fn assignrefi(loc: Int, num: Int); diff --git a/std/stdmem.c b/std/stdmem.c new file mode 100644 index 0000000..c3d0300 --- /dev/null +++ b/std/stdmem.c @@ -0,0 +1,20 @@ +#include +#include +#include +char *heap[100000]; +int heaploc = 0; + +int memalloc(int size) { + const int chunk = heaploc; + heap[heaploc++] = malloc(size); + printf("MEMALLOC: heap[%d]\n", chunk); + return chunk; +} +int drefi(int loc) { + printf("DREF: *heap[%d] = %d\n", loc, *heap[loc]); + return *heap[loc]; +} +void assignrefi(int loc, int num) { + *heap[loc] = num; + printf("ASSREF: *heap[%d] = %d\n", loc, *heap[loc]); +} diff --git a/std/stdmem.sloth b/std/stdmem.sloth new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3