Sean Conner wrote two great posts on Mon, 10 Apr 2017 21:43:29 -0400 These are all very good points. I agree I was exagerating by saying the iAPX432 and 8086 couldn't run C. After all, the language was born on the PDP-11 and that was limited to either 64KB or 128KB. So any C programs for that machine could be trivially recompiled to run on either Intel processor. But I certainly wouldn't want to port the C version of Spice to DOS, for example (I was given the job of porting the Fortran version of Spice from the PDP-11 to the Burroughs B6900 and can tell you that tales of Fortran's compatiblity are greatly exagerated, but that is another story). I also used QNX C which had some odd notation I have forgotten which allowed you to have pointers using the extra segment instead of the data segment. It was something like @cp instead of *cp.
The reason I used [bp-2] instead of [bp] in my second example is that I supposed the latter was for the dynamic links (pointer to who called us) so I needed the static link (pointer to who defined us) to be somewhere else. I did not bother trying to remember how the ENTER and LEAVE instructions work so my examples probably are not compatible with them: https://pdos.csail.mit.edu/6.828/2012/readings/i386/ENTER.htm My list should have included processors designed to run C. I won't put RISC architectures there though they were heavily influenced by studying the output of C compilers since they explicitly rejected the trend to "close the semantic gap". C: C-Machine, CRISP (Hobbit), ZPU The machines don't bother with a base pointer (frame pointer in the case of the 68000) register since C compilers can work without them. -- Jecel