On 31 Jan 2012 at 23:37, Mouse wrote:
Only if you never use the rest of the word for any
purpose, because
copying something by pointer casting to char * or unsigned char * and
copying the chars has to copy the entire object. (The Lisp Machine
implementation above presumably took advantage of the way that model
of Lisp Machine allowed two arrays to overlay one another, sharing
storage.)
Sort of. Are there any particular C rules saying that types long,
int and char must be integral multiples of one another. For
instance, could one have a char of 16 bits, an int of 21 bits and a
long of 29 bits?
Pointers really are the poison in C and drives automatic optimizers
crazy. But then, perhaps C was never intended to be automatically
optimized.
FORTRAN (IV) had a similar problem with variables in COMMON being
passed as arguments (FORTRAN does all argument passing by reference).
So you could have a routine simultaneously referring to the same
variable as a passed argument and also as a member of COMMON. The
standard said "Don't do that", but every once in awhile we'd get a
program trouble report filed with exactly that situation being called
a deficiency.
Was C ever implemented on the Burroughs B5500 and later systems that
used descriptor addressing?
--Chuck