File:
[gforth] /
gforth /
cache1.vmg
Revision
1.5:
download - view:
text,
annotated -
select for diffs
Sun Jan 25 12:35:58 2004 UTC (20 years, 2 months ago) by
anton
Branches:
MAIN
CVS tags:
HEAD
minore bugfixes (Makefile.in)
enabled 3-state stack caching for gforth-fast and gforth-native
bugfixes (EXECUTE and PERFORM; spbREG use)
explicit register allocation to spb for gforth-native, but not gforth-fast
Due to the shortest-path algorithm this means that gforth-fast uses only
S0 and S1, not S2, so we could keep that.
However, we probably want to use more states etc. for other
architectures, so we may want to have a way to select different
cache.vmg and different peeprules.vmg files for different
archs, builds, and binaries.
1: \ stack cache setup
2:
3: \ Copyright (C) 2003 Free Software Foundation, Inc.
4:
5: \ This file is part of Gforth.
6:
7: \ Gforth is free software; you can redistribute it and/or
8: \ modify it under the terms of the GNU General Public License
9: \ as published by the Free Software Foundation; either version 2
10: \ of the License, or (at your option) any later version.
11:
12: \ This program is distributed in the hope that it will be useful,
13: \ but WITHOUT ANY WARRANTY; without even the implied warranty of
14: \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: \ GNU General Public License for more details.
16:
17: \ You should have received a copy of the GNU General Public License
18: \ along with this program; if not, write to the Free Software
19: \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
20:
21: \E register IPTOS Cell
22: \E register spTOS Cell
23: \E register spb Cell
24: \E register spc Cell
25: \ \E register spd Cell
26:
27: \E create IPregs IPTOS ,
28: \E create regs spc , spb , spTOS ,
29: \ \E create regs spTOS ,
30:
31: \E IPregs 1 0 stack-state IPss1
32: \E regs 3 cells + 0 -1 stack-state ss0
33: \E regs 2 cells + 1 0 stack-state ss1
34: \E regs 1 cells + 2 1 stack-state ss2
35: \ \E regs 0 cells + 3 2 stack-state ss3
36: \ \E regs 1 cells + 0 -1 stack-state ss0
37: \ \E regs 1 0 stack-state ss1
38:
39: \ the first of these is the default state (for now)
40: \E state S1
41: \E state S0
42: \E state S2
43: \ \E state S3
44:
45: \E ss0 data-stack S0 set-ss
46: \E ss1 data-stack S1 set-ss
47: \E ss2 data-stack S2 set-ss
48: \ \E ss3 data-stack S3 set-ss
49:
50: \E IPss1 inst-stream S0 set-ss
51: \E IPss1 inst-stream S1 set-ss
52: \E IPss1 inst-stream S2 set-ss
53: \ \E IPss1 inst-stream S3 set-ss
54:
55: \E data-stack to cache-stack
56: \E here 3 cache-states 2! s0 , s1 , s2 ,
57: \ \E here 2 cache-states 2! s0 , s1 ,
58:
59: \ !! the following should be automatic
60: \E S1 to state-default
61: \E state-default to state-in
62: \E state-default to state-out
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>