From: tkoenig@netcologne.de   
      
   MitchAlsup schrieb:   
      
   > After 4 years of looking, we are still waiting for a single function   
   > that needs more than a scaled 16-bit displacement from current IP   
   > {±17-bits} to reach all labels within the function.   
      
   Some people use auto-generated code (for example from computer   
   algebra systems), which generate really, really long procedures.   
   A good stress-test for compilers, too; they tend to expose   
   O(n^2) or worse behavior where nobody looked. So it is good that   
   branch instructions within functions are expanded by the assembler   
   if needed :-)   
      
   Even having 64-bit offsets like My 66000 can lead into a trap (and will   
   require future optimization work on the compiler). This is a simplified   
   version of something that came up in a PR.   
      
    SUBROUTINE FOO   
    DOUBLE PRECISION A,B,C,D,E   
    COMMON /A,B,C,D,E/   
   C very many statements involving A,B,C,D,E   
      
   If you load and store each access to one of the variables via its   
   64-bit access, you can end up using very many 96-bit instructions,   
   where a single load of the base address of the COMMON block would   
   save a lot of code space at the expense of a single instruction   
   at the beginning.   
   --   
   This USENET posting was made without artificial intelligence,   
   artificial impertinence, artificial arrogance, artificial stupidity,   
   artificial flavorings or artificial colorants.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|