Oppolzer - Informatik / Blog


Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie

ASSEMBLER-L - Parameterübergabe-Standards

Subject:

Re: Parameter passing: overly cautious or properly paranoid?

From:

Bernd Oppolzer <bernd.oppolzer@T-ONLINE.DE>

Reply-To:

IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU>

Date:

2010.08.13 18:09:49


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.
>
> G.W.
>

Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie