I went down a deep rabbit hole (and I'm still falling). It started out with the idea of trying to compile #Uxntal into LLVM IR (and maybe WASM). Now I've jumped ships mid-course and changed to C as a target; I will probably, out of sheer perverseness, do Fortran as well. So this is decompilation of a stack-based assembly language into a non-stack-based higher-level language.
It's one of these "how hard can it be?" things.
The answer in short is, it's impossible; but there are degrees of approximation, and they are increasingly difficult. So it's a lot of fun.
My compiler now works on the Uxntal "Hello, world" so I guess that's it, job done ^_^
Let me introduce "nito", a proof-of-concept compiler from #Uxntal to C.
You can find it at https://codeberg.org/wimvanderbauwhede/nito.
I might still do an actual LLVM IR backend, and will almost certainly do Fortran as it is too good to let pass.
Fosstodon is an English speaking Mastodon instance that is open to anyone who is interested in technology; particularly free & open source software.