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
