version 1.131, 2003/01/30 17:11:02
|
version 1.137, 2003/05/11 17:17:14
|
Line 1
|
Line 1
|
\ converts primitives to, e.g., C code |
\ converts primitives to, e.g., C code |
|
|
\ Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. |
\ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc. |
|
|
\ This file is part of Gforth. |
\ This file is part of Gforth. |
|
|
Line 51
|
Line 51
|
\ (stack-in-index-xt and a test for stack==instruction-stream); there |
\ (stack-in-index-xt and a test for stack==instruction-stream); there |
\ should be only one. |
\ should be only one. |
|
|
|
\ for backwards compatibility, jaw |
|
require compat/strcomp.fs |
|
|
warnings off |
warnings off |
|
|
|
\ redefinitions of kernel words not present in gforth-0.6.1 |
|
: latestxt lastcfa @ ; |
|
: latest last @ ; |
|
|
[IFUNDEF] try |
[IFUNDEF] try |
include startup.fs |
include startup.fs |
[THEN] |
[THEN] |
Line 63 warnings off
|
Line 70 warnings off
|
\ warnings on |
\ warnings on |
|
|
include ./gray.fs |
include ./gray.fs |
32 constant max-effect \ number of things on one side of a stack effect |
128 constant max-effect \ number of things on one side of a stack effect |
4 constant max-stacks \ the max. number of stacks (including inst-stream). |
4 constant max-stacks \ the max. number of stacks (including inst-stream). |
255 constant maxchar |
255 constant maxchar |
maxchar 1+ constant eof-char |
maxchar 1+ constant eof-char |
Line 608 wordlist constant type-names \ this is h
|
Line 615 wordlist constant type-names \ this is h
|
get-current type-names set-current |
get-current type-names set-current |
stack-type 2dup nextname stack-type-name |
stack-type 2dup nextname stack-type-name |
set-current |
set-current |
stack-pointer lastxt >body stack-name nextname make-stack ; |
stack-pointer latestxt >body stack-name nextname make-stack ; |
|
|
stack inst-stream IP Cell |
stack inst-stream IP Cell |
' inst-in-index inst-stream stack-in-index-xt ! |
' inst-in-index inst-stream stack-in-index-xt ! |
Line 631 stack inst-stream IP Cell
|
Line 638 stack inst-stream IP Cell
|
: compute-offset-out ( addr1 addr2 -- ) |
: compute-offset-out ( addr1 addr2 -- ) |
['] stack-out compute-offset ; |
['] stack-out compute-offset ; |
|
|
: clear-stack ( stack -- ) |
|
dup stack-in off stack-out off ; |
|
|
|
: compute-offsets ( -- ) |
: compute-offsets ( -- ) |
['] clear-stack map-stacks |
prim prim-stacks-in max-stacks cells erase |
|
prim prim-stacks-out max-stacks cells erase |
prim prim-effect-in prim prim-effect-in-end @ ['] compute-offset-in map-items |
prim prim-effect-in prim prim-effect-in-end @ ['] compute-offset-in map-items |
prim prim-effect-out prim prim-effect-out-end @ ['] compute-offset-out map-items |
prim prim-effect-out prim prim-effect-out-end @ ['] compute-offset-out map-items |
inst-stream stack-out @ 0= s" # can only be on the input side" ?print-error ; |
inst-stream stack-out @ 0= s" # can only be on the input side" ?print-error ; |