Diff for /gforth/prims2x.fs between versions 1.137 and 1.138

version 1.137, 2003/05/11 17:17:14 version 1.138, 2003/05/13 09:36:59
Line 1271  variable tail-nextp2 \ xt to execute for Line 1271  variable tail-nextp2 \ xt to execute for
 \    int loads;       /* number of stack loads */  \    int loads;       /* number of stack loads */
 \    int stores;      /* number of stack stores */  \    int stores;      /* number of stack stores */
 \    int updates;     /* number of stack pointer updates */  \    int updates;     /* number of stack pointer updates */
   \    int offset;      /* offset into super2 table */
 \    int length;      /* number of components */  \    int length;      /* number of components */
 \    int *components; /* array of vm_prim indexes of components */  
 \  };  \  };
   
 \ How do you know which primitive or combined instruction this  \ How do you know which primitive or combined instruction this
Line 1297  variable tail-nextp2 \ xt to execute for Line 1297  variable tail-nextp2 \ xt to execute for
 : output-num-part ( p -- )  : output-num-part ( p -- )
     prim-num @ 4 .r ." ," ;      prim-num @ 4 .r ." ," ;
   
   : super2-length ( -- n )
       combined if
           num-combined @
       else
           1
       endif ;
   
   : output-name-comment ( -- )
       ."  /* " prim prim-name 2@ type ."  */" ;
   
   variable offset-super2  0 offset-super2 ! \ offset into the super2 table
   
 : output-costs ( -- )  : output-costs ( -- )
       \ description of superinstructions and simple instructions
     ." {" prim compute-costs      ." {" prim compute-costs
     rot 2 .r ." ," swap 2 .r ." ," 2 .r ." ,"      rot 2 .r ." ," swap 2 .r ." ," 2 .r ." ,"
       offset-super2 @ 5 .r ." ,"
       super2-length dup 2 .r ." }," offset-super2 +!
       output-name-comment
       cr ;
   
   : output-super2 ( -- )
       \ table of superinstructions without requirement for existing prefixes
     combined if      combined if
         num-combined @ 2 .r          ['] output-num-part map-combined 
         ." , ((int []){" ['] output-num-part map-combined ." })}, /* "  
     else      else
         ."  1, ((int []){" prim prim-num @ 4 .r ." })}, /* "          prim output-num-part
     endif      endif
     prim prim-name 2@ type ."  */"      output-name-comment
     cr ;      cr ;   
   
 \ the parser  \ the parser
   
Line 1484  Variable c-flag Line 1503  Variable c-flag
       start }} [ifdef] vmgen c-ident [else] forth-ident [then] {{ end        start }} [ifdef] vmgen c-ident [else] forth-ident [then] {{ end
       2dup prim prim-name 2! prim prim-c-name 2! }}  white **        2dup prim prim-name 2! prim prim-c-name 2! }}  white **
    (( ` / white ** {{ start }} c-ident {{ end prim prim-c-name 2! }} white ** )) ??     (( ` / white ** {{ start }} c-ident {{ end prim prim-c-name 2! }} white ** )) ??
    (( simple-primitive || combined-primitive )) {{ 1 function-number +! }}     (( simple-primitive || combined-primitive ))
      {{ 1 function-number +! }}
 )) <- primitive ( -- )  )) <- primitive ( -- )
   
 (( (( comment || primitive || nl white ** )) ** eof ))  (( (( comment || primitive || nl white ** )) ** eof ))

Removed from v.1.137  
changed lines
  Added in v.1.138


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>