File:  [gforth] / gforth / model
Revision 1.10: download - view: text, annotated - select for diffs
Mon Dec 31 19:02:24 2007 UTC (11 years, 7 months ago) by anton
Branches: MAIN
CVS tags: v0-7-0, HEAD
updated copyright year after changing license notice

    1: This file describes the implementation model of Gforth. The things
    2: described herein are valid in all implementations of Gforth.
    3: !! needs updating
    4: 
    5: \ Copyright (C) 1995,2000,2003,2007 Free Software Foundation, Inc.
    6: 
    7: \ This file is part of Gforth.
    8: 
    9: \ Gforth is free software; you can redistribute it and/or
   10: \ modify it under the terms of the GNU General Public License
   11: \ as published by the Free Software Foundation, either version 3
   12: \ of the License, or (at your option) any later version.
   13: 
   14: \ This program is distributed in the hope that it will be useful,
   15: \ but WITHOUT ANY WARRANTY; without even the implied warranty of
   16: \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   17: \ GNU General Public License for more details.
   18: 
   19: \ You should have received a copy of the GNU General Public License
   20: \ along with this program. If not, see http://www.gnu.org/licenses/.
   21: 
   22: The instruction pointer (ip) is post-incremented.
   23: 
   24: Branches are relative:
   25: 	branch
   26: offset:	target - offset
   27: 	...
   28: target:	...
   29: 
   30: The top-of return stack is in memory
   31: 
   32: The top of data stack need not be in memory. Other data stack items
   33: are in memory.
   34: 
   35: The stacks grow downward
   36: 
   37: flags are represtented by 0 and -1
   38: 
   39: The loop control parameters are the index on the top of return stack
   40: and the limit on the second item.
   41: 
   42: Everything except the virtual machine registers (ip, sp, etc.) is
   43: addressable.
   44: 
   45: The return address on the return stack occupies one cell.
   46: 
   47: There is a floating point stack
   48: The floating point numbers are the same as C's double numbers
   49: 
   50: The error returns of the file word set are FALSE or TRUE. (or should
   51: we use errno? Does this work with stdio functions?)
   52: 
   53: No assumptions can be made about the order of fetching the xt of the
   54: next word wrt the other operations in a forth word. This makes a
   55: difference only if you want to execute code lying on the stack or if
   56: you store into the very next word that is executed.

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