Just for the record, the bit zero marking the end of the parameter
list conflicts with the C (and ALGOL) call-by-value mechanism, where
(integer) values are part of the register 1 parameter list (which is
not an "address" list, in this case), and the passed values may be
negative. We had lots of trouble with that.

This is a good example. where a good idea at first sight (marking the end of
the address list with bit zero set) shows up bad in the long term.

There still has a way to be found to specify the length of a variable long
parameter list in a portable way across all platforms - even in C you
have only the stdarg.h header. The number of arguments somehow has to be
passed in the first n "fix" parameters, but it is left to the individual
function to specify how this is done.

Kind regards

Bernd



Am Freitag, 13. August 2010 15:25 schrieben Sie:
>   Yes, the unfortunate overloading of bit zero.  Does bit zero on in a
> parameter list mean a 31-bit address or the last parameter in variable
> length parameter list.  A real problem when you don't know how old the
> legacy code is that's calling your routines.
>
> Gary weinhold
> Data Kinetics. Ltd.
>

Reply via email to