home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.arch      Apparently more than just beeps & boops      131,241 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 130,368 of 131,241   
   MitchAlsup to All   
   Re: Tonights Tradeoff - NaN boxed precis   
   26 Nov 25 23:46:47   
   
   From: user5857@newsgrouper.org.invalid   
      
   scott@slp53.sl.home (Scott Lurndal) posted:   
      
   > MitchAlsup  writes:   
   > >   
   > >Robert Finch  posted:   
   > >   
   >   
   > >> The Qulps PUSH and POP instructions have room for six register fields.   
   > >> Should one of the fields be used to identify the stack pointer register   
   > >> allowing five registers to be pushed or popped? Or should the stack   
   > >> pointer register be assumed so that six registers may be pushed or popped?   
   > >   
   > >My 66000 ENTER and EXIT instruction use SP == R31 implicitly. But,   
   > >instead of giving it a number of registers, there is a start register   
   > >and a stop register, so 1-to-32 regsiters can be saved/restored. The   
   > >immediate contains how much stack space to allocate/deallocate.   
   >   
   > That seems both confining for the compiler designers and less   
   > useful than the VAX-11 register mask stored in the instruction stream   
   > at the function entry point(s).   
      
   We, and by that I mean Brian, have not found that so. In the early stages   
   we did see a bit of that, and then Brian found a way to allocate registers   
   from R31-down-to-R16 that fit the ENTER/EXIT model and we find essentially   
   nothing (that is no more instructions in the stream than necessary).   
      
   Part of the distinction is::   
   a) how arguments/results are passed to/from subroutines.   
   b) having a minimum of 7-temporary registers at entry point.   
   c) how the stack frame is designed/allocated wrt:   
      1) my  arguments and my  results,   
      2) his arguments and his results,   
      3) varargs,   
      4) dynamic arrays on stack,   
      5) stack frame allocation at ENTER,   
   d) freedom to use R30 as FP or as joe-random-register.   
      
   These were all co-designed together, after much of the instruction   
   emission logic was sorted out.   
      
   Consider this as a VAX CALL model except that the mask was replaced by   
   a list of registers, which were then packed towards R31 instead of a bit   
   vector.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca