Leopold Toetsch writes:
> Steve Fink <[EMAIL PROTECTED]> wrote:
> >> That is you pass (3, _AV_x[0], ... _AV_x[i], _AV_y[0], ...).
> 
> > Ok, we don't seem to be communicating.
> 
> Ok. Restart. Brain reset. I had a thinko somewhere.
> 
> > I proposed .args simply because it seemed easier to implement than
> > runtime .arg directives. Would you prefer that the call be done like
> > this?:
> 
> > .pcc_begin non_prototyped
> >   .arg 3
> >   $I0 = 0
> >   $I1 = _AV_x
> > _arg_loop:
> >   if $I2 >= $I0 goto _next_arg_1
> >   .arg _AV_x[$I0]
> >   $I0 = $I0 + 1
> >   goto _arg_loop
> > _next_arg_1:
> 
> No. But you are right. That's the code (/s\$I2/\$I1/) that ".args"
> should produce. Perhaps we shoud name the directive ".flatten_arg".
> 
> Is it supposed to do deep flattening? Do we need ".deeply_flatten_arg"
> too?

Okay, considering that it's hard to pack registers into an array, and
that it's easy to unpack an array into registers (in the context of
signatures), why don't we make the unprototyped calling conventions just
to pass everything in the overflow array?  (Hmm, I think I remember
saying this before... sorry if I'm repeating myself)

For prototyped calls, registers would remain used for speed.  And when
fancy things like flattening go on, just call it unprototyped.

As usual, All Is Fast If You Predec... um, nevermind. :-)

Luke

Reply via email to