This is actually probably not that difficult to do. A C backend for dmd would be quite difficult to make - but if you strip out most of the complex features that make it to code generation (exceptions, garbage collected memory, tls, classes, array ops, threading, floating point, typeinfo, destructors, postblits etc) then the actual code generated doesn't need to be that complex.
This could be (well, it _should_ be, stuff like array ops currently happens in the frontend) implemented completely in the glue layer of the compiler, with everything not supported just stubbed out.