Comment by dboreham

2 years ago

This is backwards. C was conceived as a way to do the things programmers were already doing in assembler, but with high(er) level language conveniences. In turn , the things they were doing in assembler were done to efficiently use the "VM" their code was executed on.

I have linked a paper published in ACM Queue in another comment of mine, which discusses this in depth.

The gist is, hardware and compilers are hiding all the complexity from C and other programming languages while trying to increase performance, IOW, emulating a PDP-11 while not being a PDP-11.

This is why C and its descendants are so long lived and performs very well on these systems despite the traditional memory models and simple system models they employ.

IOW, modern hardware and development tooling creates and environment akin to PDP-11, not unlike VMs emulate other hardware to make other OSes happy.

So, at the end of the day, processors are C VMs, anyway.