"C defines a virtual machine consisting of a single, contiguous block of memory with consecutive addresses"
This is 100% false. The C standard makes no mention whatsoever of memory. I don't know much about the burroughs machine, but it sounds like it would map very well to the C virtual machine:
C permits an implementation to provide a reversible mapping from pointers to "sufficiently large integers" but does not require it.
A pointer to an object is only valid in C (i.e. only has defined behavior) if it is never accessed outside the bounds of the object it points to.
Converting between data pointers and function pointers is not required to work in the C standard either.
C does require that you have a NULL pointer that has undefined behavior if you dereference this, but this could be trivially done by the runtime by allocating a single unit of memory for it.
This is 100% false. The C standard makes no mention whatsoever of memory. I don't know much about the burroughs machine, but it sounds like it would map very well to the C virtual machine:
C permits an implementation to provide a reversible mapping from pointers to "sufficiently large integers" but does not require it.
A pointer to an object is only valid in C (i.e. only has defined behavior) if it is never accessed outside the bounds of the object it points to.
Converting between data pointers and function pointers is not required to work in the C standard either.
C does require that you have a NULL pointer that has undefined behavior if you dereference this, but this could be trivially done by the runtime by allocating a single unit of memory for it.