It's not the only language of this sort, but C also has a lot of code written in it, which is a major advantage.
Not really; it's structurally nothing like assembly, which is as close as you can get to the hardware without just handcoding machine code.
Now, C -- for a structured language with static typing -- provides very little in terms of safety features that get in the way of direct hardware manipulation, whereas lots of languages with superficially similar structure aim to be safe in some ways by default which makes some hardware manipulation more difficult, or at least more verbose, than it would be in C. So, in some ways it gets less in the way of freedom to manipulate the hardware than some other structured programming languages.
But it's not particularly close to the hardware at all.
https://en.wikipedia.org/wiki/P-code_machine
Linoleum was another:
http://anynowhere.com/bb/layout/html/frameset.html
The closest in C land was C-- by Jones et al which still looks heavy compared to p-code:
Here, assembly is touching the hardware. If you write your code in assembly, it's not portable to other architectures, even hypothetically.
>provides very little in terms of safety features that get in the way of direct hardware manipulation
Exactly. So it's a heck of a lot closer to the hardware than most 3GLs.
Not really true in the context of the optimizations done by modern C compilers (e.g. autovectorization).