I wrote a tiny assembler and I thought that some of you might find it neat.
Charm is an assembler for the ARMv7 ISA (the old 32 bit one). It implements around 20 instructions, a few preprocessor directives and it can generate simple ELF executable files. It has enough features that you can write simple programs with it.
Charm is implemented in a single C file of around 1800 lines of code, and it doesn't need any dependencies: compilation is just `cc charm.c -o charm`, though you'll need a recent compiler because it uses some C23 features.
Usage is just `./charm hello.S hello`, it doesn't generate object files: it just goes straight to an executable. You can run the program on a normal ARM Linux machine without doing anything special.
I wrote Charm for fun, and not for any serious purposes. I was originally working on a hobby operating system and thought it could be cool to technically have a way of writing new programs without relying on an external system.