On Tue, 1 Feb 2000 14:48:06 -0700 James Giles <[log in to unmask]> wrote: > Kurt W. Hirchert <[log in to unmask]> wrote: > ... > > [...] All the copy-in/copy-out implementations with which I have > >had experience still received a reference to the argument; they simply used > >that reference to do a single copy-in and a single copy-out inside the > >procedure rather than using the reference (address) each time the value of > >the argument is accessed or changed. Part of the point of still receiving > >a reference was to make it unnecessary for the caller of the procedure to > >know whether the procedure directly references arguments or does > >copy-in/copy-out. > > I once used a compiler which passed by value-in/value-out by putting > the arguments into the registers. If there were more arguments than > a certain percentage of the registers (I think it was three or four > arguments max), then the arguments were passed by reference > instead. I wish I could remember the system this was on so I > could go find the old documentation. I'm not sure how much > of an optimization it was to pass small numbers of scalar arguments > through the registers. It certainly made you aware of the fact > that Fortran allowed either argument passing mechanism. > i vaguely remember something like this with CDC kit, and the way parameters were passed between fortran and assembler, but I don't think it applied to their fortran compiler. it might have been waterloo fortran. does that ring any bells? > Cray used to have something similar (for assembly routines only) > called "baselevel" procedures. I don't remember whether you could > call a baselevel routine from Fortran or not. > > -- > J. Giles > ------------------- Ian Chivers [log in to unmask] * This e-mail message was sent with Execmail V5.0 * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%