Settings

Theme

SectorC: A C Compiler in 512 bytes

xorvoid.com

63 points by valyala 4 hours ago · 12 comments

Reader

mati365 24 minutes ago

Oh, it looks like my X86-16 boot sector C compiler that I made recently [1]. Writing boot sector games has a nostalgic magic to it, when programming was actually fun and showed off your skills. It's a shame that the AI era has terribly devalued these projects.

[1] https://github.com/Mati365/ts-c-compiler

xorvoid an hour ago

I may be the author.. enjoy! It was an absolute blast making this!

  • JamesTRexx 36 minutes ago

    Would and how much would it shrink when if, while, and for were replaced by the simple goto routine? (after all, in assembly there is only jmp and no other fancy jump instruction (I assume) ).

    And PS, it's "chose your own adventure". :-) I love minimalism.

  • veltas an hour ago

    This is very nice. I'm currently writing a minimalist C compiler although my goal isn't fitting in a boot sector, it's more targeted at 8-bit systems with a lot more room than that.

    This is a great demonstration of how simple the bare bones of C are, which I think is one reason I and many others find it so appealing despite how Spartan it is. C really evolved from B which was a demake of Fortran, if Ken Thompson is to be trusted.

  • einpoklum 33 minutes ago

    An interesting use case - for the compiler as-is or for the essentiall idea of barely-C - might be in bootstrapping chains, i.e. starting from tiny platform-specific binaries one could verify the disassembly of, and gradually building more complex tools, interpreters, and compiler, so that eventually you get to something like a version of GCC and can then build an entire OS distribution.

    Examples:

    https://github.com/cosinusoidally/mishmashvm/

    and https://github.com/cosinusoidally/tcc_bootstrap_alt/

    • teo_zero 20 minutes ago

      It would be interesting to understand what non-toy programs can be coded in this subset of C. For example, could tcc be rewritten in this dialect?

riedel an hour ago

Beautiful, but make sure to quickly add 2023 to the title.

Discussed at the time: https://news.ycombinator.com/item?id=36064971

sanufar an hour ago

The way hashing is used for tokens and for making a pseudo symbol table is such an elegant idea.

  • fix4fun 32 minutes ago

    I think the same. Really nice project and good trick with hashing tokens.

    PS. There left 21 bytes (21 * 0x00 - from 0x01e0 to 0x01fd). Maybe something can be packed there ;)

mojuba 24 minutes ago

Compare that to the C compiler in 100,000 lines written by Claude in two weeks for $20,000 (I think was posted on HN just yesterday)

NooneAtAll3 33 minutes ago

> I wrote a fairly straight-forward and minimalist lexer and it took >150 lines of C code

was it supposed to be "<150"?

  • owalt 19 minutes ago

    They're saying the naive implementation was more than 150 lines of C code (300-450 bytes), i.e. too big.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection