home bbs files messages ]

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

   comp.lang.forth      Forth programmers eat a lot of Bratwurst      117,927 messages   

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

   Message 117,416 of 117,927   
   Anton Ertl to dxf   
   Re: Parsing timestamps?   
   05 Jul 25 08:49:22   
   
   From: anton@mips.complang.tuwien.ac.at   
      
   dxf  writes:   
   [8 stack items on the FP stack]   
   >Puzzling because of a thread here not long ago in which scientific users   
   >appear to suggest the opposite.  Such concerns have apparently been around   
   >a long time:   
   >   
   >https://groups.google.com/g/comp.lang.forth/c/CApt6AiFkxo/m/wwZmc_Tr1PcJ   
      
   I have read through the thread.  It's unclear to me which scientific   
   users you have in mind.  My impression is that 8 stack items was   
   deemed sufficient by many, and preferable (on 387) for efficiency   
   reasons.   
      
   Certainly, of the two points this thread is about, there was a   
   Forth200x proposal for standardizing a separate FP stack, and this   
   proposal was accepted.  There was no proposal for increasing the   
   minimum size of the FP stack; Forth-2012 still says:   
      
   |The size of a floating-point stack shall be at least 6 items.   
      
   One interesting aspect is that VFX 5.x finally includes an FP package   
   by default, and it started by including an SSE2-based FP package which   
   supports a deep FP stack.  However, MPE received customer complaints   
   about the lower number of significant digits in SSE2 (binary64)   
   vs. 387 (80-bit FP values), so they switched the default to the   
   387-based FP package that only has 8 FP stack items.  Apparently no   
   MPE customer complains about that limitation.   
      
   OTOH, iForth-5.1-mini uses the 387 instructions, but stores FP stack   
   items in memory at least on call boundaries.  Maybe Marcel Hendrix can   
   give some insight into what made him take this additional   
   implementation effort.   
      
      
   FORTH> : foo f+ f* ;  ok   
   FORTH> : bar f@ f@ f@ execute f! ;   ok   
   FORTH> ' foo idis   
   $10226000  : foo                        488BC04883ED088F4500      H.@H.m..E.   
   $1022600A  fld           [r13 0 +] tbyte41DB6D00                  A[m.   
   $1022600E  fld           [r13 #16 +] tbyte   
                                           41DB6D10                  A[m.   
   $10226012  fxch          ST(2)          D9CA                      YJ   
   $10226014  lea           r13, [r13 #32 +] qword   
                                           4D8D6D20                  M.m   
   $10226018  faddp         ST(1), ST      DEC1                      ^A   
   $1022601A  fxch          ST(1)          D9C9                      YI   
   $1022601C  fpopswap,                    41DB6D00D9CA4D8D6D10      A[m.YJM.m.   
   $10226026  fmulp         ST(1), ST      DEC9                      ^I   
   $10226028  fpush,                       4D8D6DF0D9C941DB7D00      M.mpYIA[}.   
   $10226032  ;                            488B45004883C508FFE0      H.E.H.E..` ok   
   FORTH> ' bar idis   
   $10226080  : bar                        488BC04883ED088F4500      H.@H.m..E.   
   $1022608A  pop           rbx            5B                        [   
   $1022608B  fld           [rbx] tbyte    DB2B                      [+   
   $1022608D  pop           rbx            5B                        [   
   $1022608E  fld           [rbx] tbyte    DB2B                      [+   
   $10226090  pop           rbx            5B                        [   
   $10226091  fld           [rbx] tbyte    DB2B                      [+   
   $10226093  lea           r13, [r13 #-48 +] qword   
                                           4D8D6DD0                  M.mP   
   $10226097  fxch          ST(3)          D9CB                      YK   
   $10226099  fstp          [r13 #32 +] tbyte   
                                           41DB7D20                  A[}   
   $1022609D  fstp          [r13 0 +] tbyte41DB7D00                  A[}.   
   $102260A1  fstp          [r13 #16 +] tbyte   
                                           41DB7D10                  A[}.   
   $102260A5  pop           rbx            5B                        [   
   $102260A6  or            rbx, rbx       4809DB                    H.[   
   $102260A9  je            $102260B1 offset NEAR   
                                           0F8402000000              ......   
   $102260AF  call          rbx            FFD3                      .S   
   $102260B1  pop           rbx            5B                        [   
   $102260B2  fpop,                        41DB6D00D9C94D8D6D10      A[m.YIM.m.   
   $102260BC  fstp          [rbx] tbyte    DB3B                      [;   
   $102260BE  ;                            488B45004883C508FFE0      H.E.H.E..` ok   
      
   - anton   
   --   
   M. Anton Ertl  http://www.complang.tuwien.ac.at/anton/home.html   
   comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html   
        New standard: https://forth-standard.org/   
   EuroForth 2023 proceedings: http://www.euroforth.org/ef23/papers/   
   EuroForth 2024 proceedings: http://www.euroforth.org/ef24/papers/   
      
   --- 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