3 ms·
> I'm not sure where you got that idea History: C was essentially PDP11 macro assembler. There are so many assumptions in C that basically came from the PDP11.
by overgard 5y ago
> I'm not sure where you got that idea
History: C was essentially PDP11 macro assembler. There are so many assumptions in C that basically came from the PDP11. C was originally a very utilitarian language to make writing unix easier. That it became massively popular was more of a happy accident.
- stormbrew 5y agoI'm sorry, but this is just a gross mischaracterization of what a "macro assembler" is. I agree it was utilitarian and made to make unix easier and that many of its core assumptions were based on the platform of the pdp11, but it never did in any way resemble a macro assembler as far as I know. And in fact, as gizmo86 pointed out, one of the explicit goals of C in terms of "making unix easier to write" was, afaik, that it would allow the code to be more portable to other architectures, because as the 11 in the name implies, the history that led to the creation of unix was not short on new architectures, and one of the key weaknesses of Multics was, afaik, the fact that it was rigidly written specifically for one specific architecture. By this logic nearly every programming language is just a macro assembler at a certain level of (non-)complexity. All compilers do is translate syntax (macros?) into machine code (assembly?). So, is pascal also a macro assembler? Anyways here is a list of instructions on the pdp11 that you can't directly represent even in the earliest versions of C to my knowledge: ROR ROL SWAB SXT ADC SBC BVC BVS BCS MARK HALT WAIT RESET MTPD MTPI MFPD MFPI MTPS MFPS MFPT CLC CLV CLZ CLN CCC SEC SEV SEZ SEN SCC That's the distinguishing factor of a "compiler" vs. a "macro assembler". A macro assembler is a layer on top of an assembler that still allows you full access to the instruction set and allows control flow that most compilers would consider unsafe. C was never that. It wasn't derived from a language that was that and it didn't, to my knowledge, allow that even on pdp-11 unix. I'd be really happy to see some code from one of the code archives of unix' history that proves me wrong there, though, if you have it.
- pjmlp 5y agoUNIX was originally written in Assembly, C was used to rewrite the 4th version.