If you can't implement C on a platform, I think you're in some pretty strange territory and you're probably having to invent your own language to match the platform.
If you can't implement C on a platform, I think you're in some pretty strange territory and you're probably having to invent your own language to match the platform.
In other words what you call C is actually very different from platform to platform, people solving that with a crap load of ifdef statements.
It is possible to implement C faithfully on these platforms, including all of C's weirdness like pointer-arithmetic and unsafe casting. But you'd end up with something that departs far from the platform's runtime model and calling conventions.
Of course it can. The two platforms you listed can both faithfully emulate an entire computer, upon which you can build your C runtime.
http://bellard.org/jslinux/tech.html
Now, if what you really meant was more along the lines of "can I faithfully cross-compile C to Java bytecode", the answer would be "not without a layer of abstraction".