Skip to content

Instantly share code, notes, and snippets.

@skeeto
skeeto / arena-commit.c
Created May 25, 2024 00:43
Growing arena persisting commit level through scratch copies
#define assert(c) while (!(c)) __builtin_unreachable()
#define new(a, n, t) (t *)alloc(a, n, sizeof(t), _Alignof(t))
enum { PAGESIZE = 1<<12 };
typedef signed int b32;
typedef signed int i32;
typedef char byte;
typedef signed long long iz;
typedef unsigned long long uz;
@skeeto
skeeto / lisp.c
Created May 10, 2024 22:39
Mini lisp-like interpreter
// Mini lisp-like interpreter
// $ cc -o lisp lisp.c
// $ ./lisp "(cons (+ 1 2 3 (* -40 million)) (cdr (quote (1 2 3))))"
// (-39999994 2 3)
// This is free and unencumbered software released into the public domain.
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#define assert(c) while (!(c)) *(volatile int *)0 = 0
@skeeto
skeeto / triangle.c
Last active April 27, 2024 06:22
Draw a triangle on Windows using OpenGL 1.1
// Draw a triangle on Windows using OpenGL 1.1
// $ gcc -mwindows -o triangle triangle.c -lopengl32
// This is free and unencumbered software released into the public domain.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <GL/gl.h>
#define countof(a) (int)(sizeof(a) / (sizeof(*(a))))
static LRESULT CALLBACK handler(HWND h, UINT msg, WPARAM wparam, LPARAM lparam)
@skeeto
skeeto / png.c
Last active April 24, 2024 03:41
Small, no-dependency 8-bit indexed PNG writer
// 8-bit indexed PNG writer, no dependencies
// $ cc -o png png.c
// $ ./png >image.png
// This is free and unencumbered software released into the public domain.
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
static uint32_t adler32(uint32_t sum, uint8_t *buf, ptrdiff_t len)
{
@skeeto
skeeto / twoSum.c
Created April 14, 2024 15:20
"Two Sum" benchmark
// "Two Sum" benchmark
// $ cc -O1 -nostartfiles -o twoSum.exe twoSum.c
// $ cl /O1 twoSums.c /link /subsystem:console kernel32.lib libvcruntime.lib
// Ref: https://old.reddit.com/r/C_Programming/comments/1c36391
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#define assert(c) while (!(c)) *(volatile int *)0 = 0
#define new(a, t, n) (t *)alloc(a, sizeof(t), _Alignof(t), n)
@skeeto
skeeto / example.c
Last active April 7, 2024 14:04
x86-64 Linux buffered "hello world"
// x86-64 Linux buffered "hello world"
// $ cc example.c && ./a.out
// Ref: https://old.reddit.com/r/C_Programming/comments/1bxvs3u
// Ref: https://thecoder08.github.io/hello-world.html
// Ref: https://nullprogram.com/blog/2023/02/13/
#include <stddef.h>
#include <string.h>
ptrdiff_t xwrite(int fd, void *buf, ptrdiff_t len)
{
@skeeto
skeeto / persona.c
Last active March 25, 2024 06:51
Playing around with a little database
// $ cc -o persona persona.c
// $ ./persona <test.txt
// Ref: https://old.reddit.com/r/C_Programming/comments/1bmfb7p
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#define assert(c) while (!(c)) *(volatile int *)0 = 0
#define countof(a) (ptrdiff_t)(sizeof(a) / sizeof(*(a)))
#define new(a, t, n) (t *)alloc(a, sizeof(t), _Alignof(t), n)
@skeeto
skeeto / pathmap_test.go
Created March 12, 2024 16:38
String slices as keys
// Ref: https://old.reddit.com/r/golang/comments/1bcfe95/slice_as_map_key_in_go/
package main
import (
"encoding/binary"
"fmt"
"math/rand"
"slices"
"strings"
"testing"
// $ cc -o graph graph.c
// $ ./a.out
// Ref: https://old.reddit.com/r/roguelikedev/comments/1b7pa9w/
#include <stdio.h>
static int rand31(unsigned long long *s)
{
*s = *s*0x3243f6a8885a308dU + 1;
return (int)(*s >> 33);
}
@skeeto
skeeto / demo.c
Created February 13, 2024 15:12
WriteProcessMemory demo
// WriteProcessMemory demo
// $ cc -nostartfiles -o demo.exe demo.c
// $ cl demo.c /link /subsystem:console kernel32.lib
// This is free and unencumbered software released into the public domain.
#include <stddef.h>
#define countof(a) (ptrdiff_t)(sizeof(a) / sizeof(*(a)))
typedef unsigned char u8;
typedef signed int b32;