-13 throw
(Undefined word). Actually, -13 bounce
, which
preserves the data and FP stack, so you don't lose more work than
necessary.
-19 throw
(Word name too long)
-9 throw
(Invalid memory
address).
ABORT"
or -12 THROW
(Argument type
mismatch).
-14 throw
(Interpreting a compile-only word). In some cases, you
get an execution token for compile-only-error
(which performs a
-14 throw
when executed).
-55 throw
(floating point unidentified
fault), although a -10 throw
(divide by zero) would be more
appropriate.
-9 throw
(Invalid memory address) as soon as the overflow happens. If it is not
check, overflows typically result in mysterious illegal memory accesses,
producing -9 throw
(Invalid memory address) or -23 throw
(Address alignment exception); they might also destroy the internal data
structure of ALLOCATE
and friends, resulting in various errors in
these words.
allot
, or indirectly
with ,
, create
etc.) more memory than available in the
dictionary, you get a -8 throw
(Dictionary overflow). If you try
to access memory beyond the end of the dictionary, the results are
similar to stack overflows.
-14 throw
(Interpreting a compile-only word).
PARSE
cannot overflow. WORD
does not check for overflow.
-55 throw
(floatingpoint unidentified
fault), although a -10 throw
(divide by zero) would be more
appropriate. convert
and >number
currently overflow
silently.
-4 throw
(Stack
underflow) is performed. Apart from that, stacks may be checked or not,
depending on operating system, installation, and invocation. The
consequences of stack underflows are similar to the consequences of
stack overflows. Note that even if the system uses checking (through the
MMU), your program may have to underflow by a significant number of
stack items to trigger the reaction (the reason for this is that the
MMU, and therefore the checking, works with a page-size granularity).
Create
and its descendants perform a -16 throw
(Attempt to
use zero-length string as a name). Words like '
probably will not
find what they search. Note that it is possible to create zero-length
names with nextname
(should it not?).
>IN
greater than input buffer:
RECURSE
appears after DOES>
:
RESTORE-INPUT
:
-12 THROW
. Note that, once an input file is closed (e.g., because
the end of the file was reached), its source-id may be
reused. Therefore, restoring an input source specification referencing a
closed file may lead to unpredictable results instead of a -12
THROW
.
In the future, Gforth may be able to restore input source specifications
from other than the current input source.
allot
is not checked. This typically results in
memory access faults or execution of illegal instructions.
-23 throw
(Address
alignment exception). Under Linux-Intel on a 486 or later processor with
alignment turned on, incorrect alignment results in a -9 throw
(Invalid memory address). There are reportedly some processors with
alignment restrictions that do not report violations.
,
, C,
:
PICK
and ROLL
):
IMMEDIATE
):
abort" last word was headerless"
.
VALUE
used by TO
:
-32 throw
(Invalid name argument) (unless name is a local or was
defined by CONSTANT
; in the latter case it just changes the constant).
'
, POSTPONE
, [']
, [COMPILE]
):
-13 throw
(Undefined word)
DO
, ?DO
, WITHIN
):
POSTPONE
or [COMPILE]
applied to TO
:
: X POSTPONE TO ; IMMEDIATE
. X
performs the
compilation semantics of TO
.
WORD
:
LSHIFT
, RSHIFT
):
CREATE
:
>BODY
produces the PFA of the word no matter how it was defined.
DOES>
changes the execution semantics of the last defined word no
matter how it was defined. E.g., CONSTANT DOES>
is equivalent to
CREATE , DOES>
.
<#
and #>
:
Go to the first, previous, next, last section, table of contents.