Tweaking On Compilers: Kill the Runtime
What really happens before main()? A journey from C runtime and ELF entry points to building tiny executables without libc
C and C++ deep dives into OS internals, graphics, debugger internals, and retrocomputing.
What really happens before main()? A journey from C runtime and ELF entry points to building tiny executables without libc
A ground-up implementation of Ken Perlin's gradient noise algorithm in C, covering gradient vectors, dot products, fade curves, and why it produces natural-looking randomness on a deterministic machine.
Why ptrace's one-tracer rule breaks debugger-on-debugger scenarios, and a deep dive into its API design flaws: silent state inheritance, overloaded void* parameters, and ambiguous error returns.
Building fbgl — a minimal Linux framebuffer graphics library in C with zero dependencies. Covers mmap-based framebuffer access via /dev/fb0, the drawing API, and TGA texture loading.
How I built c6502 — an all-in-one MOS 6502 emulator, debugger, and decompiler in C. Covers real-time register and memory monitoring, a disassembler panel, and running actual 6502 binaries assembled with ca65.
Final weekend state of CVM++: classfile loader, stack/frames, and a tiny interpreter that can run simple Java.
Part 1 of building a working JVM from scratch in C++. Covers functional requirements, .class file structure, the constant pool, and parsing raw Java bytecode by hand.