Diff for /gforth/prims2x.fs between versions 1.62 and 1.63

version 1.62, 2001/01/06 19:29:14 version 1.63, 2001/01/09 16:11:36
Line 82  skipsynclines on Line 82  skipsynclines on
 : end ( addr -- addr u )  : end ( addr -- addr u )
  cookedinput @ over - ;   cookedinput @ over - ;
   
   : quote ( -- )
       [char] " emit ;
   
 variable output \ xt ( -- ) of output word  variable output \ xt ( -- ) of output word
   
 : printprim ( -- )  : printprim ( -- )
Line 626  does> ( item -- ) Line 629  does> ( item -- )
     repeat      repeat
     2drop type ;      2drop type ;
   
   : print-type-prefix ( type -- )
       body> >head .name ;
   
   : print-debug-arg { item -- }
       ." fputs(" quote space item item-name 2@ type ." =" quote ." , vm_out); "
       ." printarg_" item item-type @ print-type-prefix
       ." (" item item-name 2@ type ." );" cr ;
       
   : print-debug-args ( -- )
       ." #ifdef VM_DEBUG" cr
       ." if (vm_debug) {" cr
       effect-in-end @ effect-in ?do
           i print-debug-arg
           item% %size +loop
       ." fputc('\n', vm_out);" cr
       ." }" cr
       ." #endif" cr ;
       
 : output-c ( -- )   : output-c ( -- ) 
  ." I_" c-name 2@ type ." :     /* " forth-name 2@ type ."  ( " stack-string 2@ type ." ) */" cr   ." I_" c-name 2@ type ." :     /* " forth-name 2@ type ."  ( " stack-string 2@ type ." ) */" cr
  ." /* " doc 2@ type ."  */" cr   ." /* " doc 2@ type ."  */" cr
  ." NAME(" [char] " emit forth-name 2@ type [char] " emit ." )" cr \ debugging   ." NAME(" quote forth-name 2@ type quote ." )" cr \ debugging
  ." {" cr   ." {" cr
  ." DEF_CA" cr   ." DEF_CA" cr
  declarations   declarations
Line 637  does> ( item -- ) Line 658  does> ( item -- )
  ." NEXT_P0;" cr   ." NEXT_P0;" cr
  flush-tos   flush-tos
  fetches   fetches
    print-debug-args
  stack-pointer-updates   stack-pointer-updates
  ." {" cr   ." {" cr
  ." #line " c-line @ . [char] " emit c-filename 2@ type [char] " emit cr   ." #line " c-line @ . quote c-filename 2@ type quote cr
  c-code 2@ type-c   c-code 2@ type-c
  ." }" cr   ." }" cr
  output-c-tail   output-c-tail
Line 647  does> ( item -- ) Line 669  does> ( item -- )
  cr   cr
 ;  ;
   
 : print-type-prefix ( type -- )  
     body> >head .name ;  
   
 : disasm-arg { item -- }  : disasm-arg { item -- }
     item item-stack @ inst-stream = if      item item-stack @ inst-stream = if
         ."   printarg_" item item-type @ print-type-prefix          ."   fputc(' ', vm_out); "
         ." (ip[" item item-offset @ 1+ 0 .r ." ]);" cr          ." printarg_" item item-type @ print-type-prefix
           ." ((" item item-type @ type-c-name 2@ type ." )"
           ." ip[" item item-offset @ 1+ 0 .r ." ]);" cr
     endif ;      endif ;
   
 : disasm-args ( -- )  : disasm-args ( -- )
Line 664  does> ( item -- ) Line 685  does> ( item -- )
 : output-disasm ( -- )  : output-disasm ( -- )
     \ generate code for disassembling VM instructions      \ generate code for disassembling VM instructions
     ." if (ip[0] == prim[" function-number @ 0 .r ." ]) {" cr      ." if (ip[0] == prim[" function-number @ 0 .r ." ]) {" cr
     ."   fputs(" [char] " emit forth-name 2@ type [char] " emit ." ,stdout);" cr      ."   fputs(" quote forth-name 2@ type quote ." , vm_out);" cr
     ." /* " declarations ." */" cr      ." /* " declarations ." */" cr
     compute-offsets      compute-offsets
     disasm-args      disasm-args
Line 672  does> ( item -- ) Line 693  does> ( item -- )
     ." } else "      ." } else "
     1 function-number +! ;      1 function-number +! ;
   
   
   
   
 : gen-arg-parm { item -- }  : gen-arg-parm { item -- }
     item item-stack @ inst-stream = if      item item-stack @ inst-stream = if
         ." , " item item-type @ type-c-name 2@ type space          ." , " item item-type @ type-c-name 2@ type space
Line 725  does> ( item -- ) Line 743  does> ( item -- )
     ." Cell * I_" c-name 2@ type ." (Cell *SP, Cell **FP)      /* " forth-name 2@ type      ." Cell * I_" c-name 2@ type ." (Cell *SP, Cell **FP)      /* " forth-name 2@ type
     ."  ( " stack-string 2@ type ."  ) */" cr      ."  ( " stack-string 2@ type ."  ) */" cr
     ." /* " doc 2@ type ."  */" cr      ." /* " doc 2@ type ."  */" cr
     ." NAME(" [char] " emit forth-name 2@ type [char] " emit ." )" cr      ." NAME(" quote forth-name 2@ type quote ." )" cr
     \ debugging      \ debugging
     ." {" cr      ." {" cr
     declarations      declarations
Line 739  does> ( item -- ) Line 757  does> ( item -- )
     stack-pointer-updates      stack-pointer-updates
     fp-stack   stack-used? IF ." *FP=fp;" cr THEN      fp-stack   stack-used? IF ." *FP=fp;" cr THEN
     ." {" cr      ." {" cr
     ." #line " c-line @ . [char] " emit c-filename 2@ type [char] " emit cr      ." #line " c-line @ . quote c-filename 2@ type quote cr
     c-code 2@ type      c-code 2@ type
     ." }" cr      ." }" cr
     stores      stores

Removed from v.1.62  
changed lines
  Added in v.1.63


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