No, it doesn't. C does not even assume a stack. A platform where function call frames are allocated on the heap would not be incompatible with C.
You could say that some C code assumes a stack, but that's pretty exceptional.
> Although I imagine that currently, in most cases, you'll want to avoid C for software reasons,
Yes.
> rather than hardware reasons
Hard to imagine hardware on which C could not run. Maybe a JVM chip, but even then, you could compile C to bytecode.