It has a lot of idiosyncrasies, and the upstream is a moving target.
When I began, it was easy to write an assembler (especially for RISC-V), but it was not easy figuring out which macros and stubs you needed to fill out before you could test them. It's hard to tell if you're making progress.
Each of the existing backends has its own signature, which betrays whichever backend was copied as a starting point. Some of them have comments on a given chunk, while the same piece of code in another backend might have no comments.
The other thing is the lack of a portable interpreter. This choice makes great sense from a performance perspective, but it's a pain when you just want to make incremental progress.
I have other engaging work now, so my port is abandoned, and I hadn't committed anything worth pushing for a while when I stopped.
I think it may make more sense if you ever worked on a hotspot target.
Though all things considered, I'm fairly certain I could do it in not much time if it was my full time job (which is what I said in a couple of interviews last year, when I was looking for a company willing to make that a thing).
How so?