Înapoi la articole →

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 40
  1. My new ZBook G1a comes with AVX-512 instructions and a healthy memory bandwidth (200GB/s allegedly), so one of the first things I did was write a little kernel to see how fast it can really go.

  2. Introduction I’ve just bought a laptop, having had my current machine for around a decade.

  3. Designing a symbol table

    Introduction Compilers are full of strings, and resolving entities by name winds up being a common operation.

  4. This post documents a small technique I invented (in the sense that I haven’t seen if before, although I wouldn’t be surprised if there is prior art) for packing small sparse arrays into dense arrays.

  5. Wirecode - simple TLV decoding

    Wirecode is a library and wire format I’ve been working on for simple serialization and deserialization of data in C.

  6. Software

    Some of the software I’ve written or I’m working on.

  7. broot is a small utility I wrote specialized to build sandboxing on linux.

  8. The System V x86-64 ABI

    Sometimes its useful to understand how a procedure receives its arguments, and returns values it computes.

  9. ARM64 development on x86_64

    I would like to add an ARM64 backend to my compiler project, but a prerequisite for that is learning ARM64 assembly sufficiently well that I can get something basic stood up.

  10. Register shuffling

    Compilers are full of cute little data structure and algorithm problems.

  11. Inlinable pinned OpenBSD syscalls

    OpenBSD has the capability of restricting permissible syscall origins addresses.

  12. Parallel byte delete 16-wide

    Following on from previous investigations into deleting characters, and deleting characters using MMX instructions it remains to be seen what can be done using the full 16-byte with of SSE registers.

  13. In a discussion on Twitter somebody pointed out to me that the pext instruction on AMD processors is much slower than on Intel, up until fairly recent processors (Zen 3).

  14. Christmas game development

    A small devlog of a Christmas project.

  15. My language and compiler (“orion”) is getting to the point I could use it to write some vaguely real software.

  16. Debian base workstation setup

    I’m setting up my workstation with a fresh install.

  17. Zip bins

    I learned a cool things from Justine Tunney’s work (I’m a great admirer), in particular from her work on redbean.

  18. Intel’s vector instruction sets (SSE, AVX etc.) are well known, but Intel has added various other instruction set extensions specialised for other tasks.

  19. Right inverting movemask

    Introduction movemask instructions take a vector register of values, and construct an integer where the ith bit is set precisely when the higher order byte of the ith lane is set.

  20. On and off over the last year or two I’ve been trying to learn more about doing sophisticated things with SIMD instructions.

  21. Fun with small bitsets

    Small sets of small integers can often be packed into single integers by using the bits to mark presence or non-presence of elements.

  22. OpenBSD malloc options

    TL;DR: On OpenBSD, while testing, set MALLOC_OPTIONS="SCFGJRU" in your environment.

  23. Goto considered useful

    Aside from the usual error handling in C, gotos can be convenient for the first pass on some programs.

  24. Blitting pixels in X11

    The following are source code snippets for showing how to blit pixels directly using X11.

  25. A simple fuzzy matcher

    I like interfaces which permit fuzzy matching.

  26. About

    General This is my personal site for dumping whatever I want.

  27. Basic git subtrees

    Condensed notes on how to use git subtrees to vendor in source code.

  28. Introduction Tracepoints provide a way to instrument running programs dynamically in order to aid debugging.

  29. A simple intrusive linked list

    Linked lists aren't necessarily the first data structure you might reach for, but if you need them, it's nice to not have to keep reimplementing the structures and operations.

  30. Sometimes it's nice to be able to allocate a bunch of different linked structures in one go, instead of making separate allocations.

  31. We'll measure the impact of false-sharing on a simple spinlock.

  32. A pithy a terse account of memory models and lock-free programming.

  33. Welcome

    I've decided to start a new site.

  34. One of the often recognized issues with object-oriented programming is that it's often hard to write multithreaded software well.

  35. Introduction Haskell is one of my (if not my) favourite language.

  36. Introduction st is a simple terminal emulator from suckless tools.

  37. I recently converted one of my machines from a parabola installation to a Debian 10 system.

  38. Introduction Recursion is central to functional programming, as a clearer alternative to loops as other control structures typical of imperative languages.

  39. Libre-rate your NixOS

    NixOS isn't a libre distribution by any means, but it comes close, and maintains a clear distinction between free and non-free packages (and in fact, different license types).

  40. Here I’ll outline how I managed to get DragonFly BSD to boot from a single slice (Linux: partition) by chainloading the DragonFly bootloader boot1.