version 1.10, 2003/11/03 20:13:35
|
version 1.20, 2007/12/31 18:40:24
|
Line 1
|
Line 1
|
|
\ Gforth superinstructions and stack caching replicas |
|
|
|
\ Copyright (C) 2003,2004,2005 Free Software Foundation, Inc. |
|
|
|
\ This file is part of Gforth. |
|
|
|
\ Gforth is free software; you can redistribute it and/or |
|
\ modify it under the terms of the GNU General Public License |
|
\ as published by the Free Software Foundation, either version 3 |
|
\ of the License, or (at your option) any later version. |
|
|
|
\ This program is distributed in the hope that it will be useful, |
|
\ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
\ GNU General Public License for more details. |
|
|
|
\ You should have received a copy of the GNU General Public License |
|
\ along with this program. If not, see http://www.gnu.org/licenses/. |
|
|
\ taken from David Gregg's EuroForth 2001 paper; omitted some sequences |
\ taken from David Gregg's EuroForth 2001 paper; omitted some sequences |
|
\ eliminated for gforth-native: |
|
\ 1) sequences containing call |
|
\ 2) sequences with immediate arguments not in the first position |
|
|
|
\ no new prim-nums for supers and state-replicas |
|
\E ' noop is output-c-prim-num |
|
|
super1 = lit + |
super1 = lit + |
super2 = lit call |
\ super2 = lit call |
super3 = lit @ |
super3 = lit @ |
super4 = lit @ call |
\ super4 = lit @ call |
super5 = @ call |
\ super5 = @ call |
super6 = lit ! |
super6 = lit ! |
super7 = lit lit |
\ super7 = lit lit |
super8 = dup lit |
\ super8 = dup lit |
super9 = ! lit |
\ super9 = ! lit |
super10 = lit ! lit |
\ super10 = lit ! lit |
super11 = ! ;s |
super11 = ! ;s |
super12 = lit + @ |
super12 = lit + @ |
super13 = 0= ?branch |
\ super13 = 0= ?branch |
super14 = dup call |
\ super14 = dup call |
super15 = useraddr @ |
super15 = useraddr @ |
super16 = + @ |
super16 = + @ |
super17 = lit @ ?branch |
\ super17 = lit @ ?branch |
super18 = lit ! ;s |
super18 = lit ! ;s |
super19 = lit @ and |
super19 = lit @ and |
super20 = = ?branch |
\ super20 = = ?branch |
super21 = lit lit ! |
\ super21 = lit lit ! |
super22 = @ ?branch |
\ super22 = @ ?branch |
super23 = useraddr ! |
super23 = useraddr ! |
super24 = dup ?branch |
\ super24 = dup ?branch |
super25 = @ ;s |
super25 = @ ;s |
super26 = lit @ + |
super26 = lit @ + |
super27 = dup @ |
super27 = dup @ |
|
|
\ \F 0 [if] |
\F 0 [if] |
|
|
\ \ \E prim-states ;s \ 2950159 |
\ \E prim-states ;s \ 2950159 |
\ \E prim-states lit \ 2802835 |
\E prim-states lit \ 2802835 |
\ \ \E prim-states call \ 2558373 |
\ \E prim-states call \ 2558373 |
\ \E prim-states @ \ 2244351 |
\E prim-states @ \ 2244351 |
\ \E branch-states ?branch \ 1134432 |
\E branch-states ?branch \ 1134432 |
\ \E prim-states lit@ \ 1051813 |
\E prim-states lit@ \ 1051813 |
\ \E prim-states swap \ 737988 |
\E prim-states swap \ 737988 |
\ \E S0 S2 state-prim swap |
\E S0 S2 state-prim swap |
\ \E S1 S2 state-prim swap |
\E S1 S2 state-prim swap |
\ \E S2 S3 state-prim swap |
\E S2 S3 state-prim swap |
\ \E S3 S2 state-prim swap |
\E S3 S2 state-prim swap |
\ \E prim-states c@ \ 651406 |
\E prim-states c@ \ 651406 |
\ \E prim-states = \ 590006 |
\E prim-states = \ 590006 |
\ \E prim-states 0= \ 584487 |
\E prim-states 0= \ 584487 |
\ \E prim-states dup \ 566855 |
\E prim-states dup \ 566855 |
\ \E S0 S1 state-prim dup |
\E S0 S1 state-prim dup |
\ \E prim-states + \ 566003 |
\E S1 S1 state-prim dup |
\ \E prim-states i \ 502908 |
\E prim-states + \ 566003 |
\ \E prim-states +! \ 448925 |
\E prim-states i \ 502908 |
\ \ \E prim-states branch \ 409561 |
\E prim-states +! \ 448925 |
\ \ \E prim-states (loop) \ 379646 |
\ \E prim-states branch \ 409561 |
\ \ \E prim-states lp! \ 326743 |
\ \E prim-states (loop) \ 379646 |
\ \E prim-states and \ 309427 |
\ \E prim-states lp! \ 326743 |
\ \E prim-states useraddr \ 303254 |
\E prim-states and \ 309427 |
\ \E prim-states over \ 283556 |
\E prim-states useraddr \ 303254 |
\ \E S0 S1 state-prim over |
\E prim-states over \ 283556 |
\ \E S1 S2 state-prim over |
\E S0 S1 state-prim over |
\ \E S2 S1 state-prim over |
\E S1 S2 state-prim over |
\ \E S3 S2 state-prim over |
\E S2 S1 state-prim over |
\ \E prim-states negate \ 257417 |
\E S3 S2 state-prim over |
\ \E prim-states cells \ 254644 |
\E prim-states negate \ 257417 |
\ \E prim-states rot \ 220273 |
\E prim-states cells \ 254644 |
\ \E S3 S1 state-prim rot |
\E prim-states rot \ 220273 |
\ \E S2 S3 state-prim rot |
\E S3 S1 state-prim rot |
\ \E S1 S3 state-prim rot |
\E S2 S3 state-prim rot |
\ \E S0 S3 state-prim rot |
\E S1 S3 state-prim rot |
\ \E prim-states ! \ 218672 |
\E S0 S3 state-prim rot |
\ \E prim-states 2dup \ 211315 |
\E S4 S2 state-prim rot |
\ \E S0 S2 state-prim 2dup |
\E S5 S3 state-prim rot |
\ \E S1 S3 state-prim 2dup |
\E prim-states ! \ 218672 |
\ \E S2 S2 state-prim 2dup |
\E prim-states 2dup \ 211315 |
\ \E S3 S1 state-prim 2dup |
\E S0 S1 state-prim 2dup |
\ \ \E branch-states lit-perform \ 188331 |
\E S0 S2 state-prim 2dup |
\ \E prim-states <> \ 179502 |
\E S1 S3 state-prim 2dup |
\ \E prim-states c! \ 179332 |
\E S2 S2 state-prim 2dup |
\ \E prim-states lit+ \ 179156 |
\E S3 S1 state-prim 2dup |
\ \E prim-states drop \ 173995 |
\E S4 S4 state-prim 2dup |
\ \E S0 S0 state-prim drop |
\E S4 S2 state-prim 2dup |
\ \E prim-states lshift \ 164671 |
\ \E branch-states lit-perform \ 188331 |
\ \E prim-states /mod \ 164670 |
\E prim-states <> \ 179502 |
\ \E prim-states >r \ 145247 |
\E prim-states c! \ 179332 |
\ \E prim-states r> \ 133792 |
\E prim-states lit+ \ 179156 |
\ \ \E branch-states does-exec \ 120944 |
\E prim-states drop \ 173995 |
\ \E prim-states cell+ \ 116183 |
\E S0 S0 state-prim drop |
\ \E prim-states lp+!# \ 106697 \ -- |
\E prim-states lshift \ 164671 |
\ \E prim-states - \ 106245 |
\E prim-states /mod \ 164670 |
\ \E prim-states unloop \ 98938 \ -- |
\E prim-states >r \ 145247 |
\ \E prim-states lp+ \ 87190 \ -- |
\E prim-states r> \ 133792 |
\ \E prim-states >= \ 80994 |
\ \E branch-states does-exec \ 120944 |
\ \E prim-states tuck \ 78696 |
\E prim-states cell+ \ 116183 |
\ \E S2 S2 state-prim tuck |
\E prim-states lp+!# \ 106697 \ -- |
\ \E prim-states /string \ 78595 |
\E prim-states - \ 106245 |
\ \E prim-states char+ \ 77542 |
\E prim-states unloop \ 98938 \ -- |
\ \ \E prim-states ?dup \ 76850 |
\E prim-states lp+ \ 87190 \ -- |
\ \E prim-states @local0 \ 75322 |
\E prim-states >= \ 80994 |
\ \E prim-states min \ 75264 |
\E prim-states tuck \ 78696 |
\ \ \E prim-states compare \ 65603 |
\E S2 S2 state-prim tuck |
\ \E branch-states (u+do) \ 63823 |
\E S3 S3 state-prim tuck |
\ \ \E prim-states (read-line) \ 63823 |
\E prim-states /string \ 78595 |
\ \E prim-states 2>r \ 62646 |
\E prim-states char+ \ 77542 |
\ \E prim-states 2r> \ 62644 |
\E prim-states ?dup \ 76850 |
\ \E prim-states 2r@ \ 61338 |
\E prim-states @local0 \ 75322 |
\ \E prim-states 2@ \ 61067 |
\E prim-states min \ 75264 |
\ \E prim-states nip \ 54961 |
\ \E prim-states compare \ 65603 |
\ \E S1 S1 state-prim nip |
\E branch-states (u+do) \ 63823 |
\ \E S0 S1 state-prim nip |
\ \E prim-states (read-line) \ 63823 |
\ \E prim-states within \ 51075 |
\E prim-states 2>r \ 62646 |
\ \E prim-states 1- \ 47441 |
\E prim-states 2r> \ 62644 |
\ \E branch-states execute \ 46674 |
\E prim-states 2r@ \ 61338 |
\ \E prim-states lp- \ 45385 |
\E prim-states 2@ \ 61067 |
\ \E branch-states perform \ 38756 |
\E prim-states nip \ 54961 |
\ \E prim-states xor \ 35599 |
\E S1 S1 state-prim nip |
\ \E prim-states @local# \ 34586 |
\E S0 S1 state-prim nip |
\ \ \E prim-states pick \ 32015 |
\E S2 S2 state-prim nip |
\ \E prim-states u> \ 29373 |
\E prim-states within \ 51075 |
\ \E prim-states -rot \ 26211 |
\E prim-states 1- \ 47441 |
\ \E S3 S2 state-prim -rot |
\E branch-states execute \ 46674 |
\ \E S1 S3 state-prim -rot |
\E prim-states lp- \ 45385 |
\ \E prim-states 2drop \ 25418 |
\E branch-states perform \ 38756 |
\ \E S0 S0 state-prim 2drop |
\E prim-states xor \ 35599 |
\ \E S1 S0 state-prim 2drop |
\E prim-states @local# \ 34586 |
\ \ \E prim-states (tablelfind) \ 22243 |
\ \E prim-states pick \ 32015 |
\ \E prim-states or \ 21587 |
\E prim-states u> \ 29373 |
\ \E prim-states @local2 \ 20859 |
\E prim-states -rot \ 26211 |
\ \E branch-states (+loop) \ 20006 |
\E S3 S2 state-prim -rot |
\ \E prim-states 1+ \ 17944 |
\E S1 S3 state-prim -rot |
\ \E prim-states rdrop \ 17902 |
\E S4 S3 state-prim -rot |
\ \E branch-states (?do) \ 17348 |
\E S2 S4 state-prim -rot |
\ \E prim-states max \ 16948 |
\E S3 S5 state-prim -rot |
\ \E prim-states 2* \ 15606 |
\E prim-states 2drop \ 25418 |
\ \ \E prim-states filename-match \ 15003 |
\E S0 S0 state-prim 2drop |
\ \ \E prim-states (listlfind) \ 13074 |
\E S1 S0 state-prim 2drop |
\ \ \E prim-states sp@ \ 12741 |
\ \E prim-states (tablelfind) \ 22243 |
\ \ \E prim-states fp@ \ 12384 |
\E prim-states or \ 21587 |
\ \ \E prim-states um/mod \ 12288 |
\E prim-states @local2 \ 20859 |
\ \E prim-states 2! \ 11904 |
\E branch-states (+loop) \ 20006 |
\ \ \E prim-states fill \ 10781 |
\E prim-states 1+ \ 17944 |
\ \ \E prim-states (parse-white) \ 10624 |
\E prim-states rdrop \ 17902 |
\ \E branch-states (do) \ 10516 |
\E branch-states (?do) \ 17348 |
\ \ \E prim-states (hashkey1) \ 10239 |
\E prim-states max \ 16948 |
\ \E prim-states u< \ 9602 |
\E prim-states 2* \ 15606 |
\ \ \E prim-states write-file \ 8973 |
\ \E prim-states filename-match \ 15003 |
\ \E prim-states count \ 8873 |
\ \E prim-states (listlfind) \ 13074 |
\ \ \E prim-states rp@ \ 8410 |
\ \E prim-states sp@ \ 12741 |
\ \E prim-states 0< \ 8380 |
\ \E prim-states fp@ \ 12384 |
\ \E prim-states < \ 7741 |
\ \E prim-states um/mod \ 12288 |
\ \E prim-states @local1 \ 7458 |
\E prim-states 2! \ 11904 |
\ \ \E prim-states move \ 7050 |
\ \E prim-states fill \ 10781 |
\ \E prim-states u>= \ 6138 |
\ \E prim-states (parse-white) \ 10624 |
\ \E branch-states (+do) \ 5863 |
\E branch-states (do) \ 10516 |
\ \ \E prim-states va-return-double \ 5517 |
\ \E prim-states (hashkey1) \ 10239 |
\ \E prim-states um* \ 5342 |
\E prim-states u< \ 9602 |
\ \E prim-states toupper \ 3517 |
\ \E prim-states write-file \ 8973 |
\ \ \E prim-states f@local1 \ 2907 |
\E prim-states count \ 8873 |
\ \ \E prim-states rp! \ 2859 |
\ \E prim-states rp@ \ 8410 |
\ \ \E prim-states ?dup-?branch \ 2829 |
\E prim-states 0< \ 8380 |
\ \E prim-states d+ \ 2671 |
\E prim-states < \ 7741 |
\ \ \E prim-states ftuck \ 2636 |
\E prim-states @local1 \ 7458 |
\ \ \E prim-states read-file \ 2623 |
\ \E prim-states move \ 7050 |
\ \ \E prim-states ms \ 2454 |
\E prim-states u>= \ 6138 |
\ \ \E prim-states (s+loop) \ 2429 |
\E branch-states (+do) \ 5863 |
\ \ \E prim-states allocate \ 1869 |
\ \E prim-states va-return-double \ 5517 |
\ \E prim-states * \ 1520 |
\E prim-states um* \ 5342 |
\ \E prim-states 0<> \ 925 |
\ \E prim-states toupper \ 3517 |
\ \ \E prim-states noop \ 715 |
\ \E prim-states f@local1 \ 2907 |
\ \E prim-states aligned \ 714 |
\ \E prim-states rp! \ 2859 |
\ \E prim-states u<= \ 684 |
\ \E prim-states ?dup-?branch \ 2829 |
\ \E prim-states i' \ 684 |
\E prim-states d+ \ 2671 |
\ \E prim-states > \ 411 |
\ \E prim-states ftuck \ 2636 |
\ \ \E prim-states (hashlfind) \ 397 |
\ \E prim-states read-file \ 2623 |
\ \E prim-states 2swap \ 336 |
\ \E prim-states ms \ 2454 |
\ \E S0 S3 state-prim 2swap |
\ \E prim-states (s+loop) \ 2429 |
\ \E S1 S3 state-prim 2swap |
\ \E prim-states allocate \ 1869 |
\ \E prim-states laddr# \ 335 |
\E prim-states * \ 1520 |
\ \ \E prim-states faxpy \ 286 |
\E prim-states 0<> \ 925 |
\ \ \E prim-states (next) \ 272 |
\ \E prim-states noop \ 715 |
\ \ \E prim-states (-loop)-lp+!# \ 248 |
\E prim-states aligned \ 714 |
\ \E prim-states <= \ 199 |
\E prim-states u<= \ 684 |
\ \E prim-states invert \ 170 |
\E prim-states i' \ 684 |
\ \E branch-states (-do) \ 169 |
\E prim-states > \ 411 |
\ \E prim-states 2over \ 165 |
\ \E prim-states (hashlfind) \ 397 |
\ \E S0 S2 state-prim 2over |
\E prim-states 2swap \ 336 |
\ \E S1 S3 state-prim 2over |
\E S0 S3 state-prim 2swap |
\ \E prim-states under+ \ 154 |
\E S1 S3 state-prim 2swap |
\ \E prim-states dnegate \ 128 |
\E S2 S4 state-prim 2swap |
\ \E prim-states u<> \ 128 |
\E S4 S2 state-prim 2swap |
\ \E prim-states 0> \ 122 |
\E prim-states laddr# \ 335 |
\ \ \E prim-states (loop)-lp+!# \ 118 |
\ \E prim-states faxpy \ 286 |
\ \E prim-states j \ 117 |
\ \E prim-states (next) \ 272 |
\ \E prim-states float+ \ 78 |
\ \E prim-states (-loop)-lp+!# \ 248 |
\ \ \E prim-states (for) \ 68 |
\E prim-states <= \ 199 |
\ \E prim-states 2rdrop \ 60 \ -- |
\E prim-states invert \ 170 |
\ \ \E prim-states f! \ 14 |
\E branch-states (-do) \ 169 |
\ \E prim-states >l \ 14 |
\E prim-states 2over \ 165 |
\ \ \E prim-states close-file \ 5 |
\E S0 S2 state-prim 2over |
\ \ \E prim-states call-c \ 4 |
\E S1 S3 state-prim 2over |
\ \ \E prim-states reposition-file \ 3 |
\E S2 S4 state-prim 2over |
\ \E prim-states / \ 3 |
\E S3 S5 state-prim 2over |
\ \ \E prim-states resize-file \ 2 |
\E S4 S2 state-prim 2over |
\ \ \E prim-states free \ 2 |
\E S5 S3 state-prim 2over |
\ \E prim-states 2/ \ 2 |
\E S6 S4 state-prim 2over |
\ \ \E prim-states up! \ 1 |
\E prim-states under+ \ 154 |
\ \ \E prim-states stdin \ 1 |
\E prim-states dnegate \ 128 |
\ \ \E prim-states key?-file \ 1 |
\E prim-states u<> \ 128 |
\ \ \E prim-states flush-icache \ 1 |
\E prim-states 0> \ 122 |
\ \ \E prim-states cmove \ 1 |
\ \E prim-states (loop)-lp+!# \ 118 |
\ \ \E prim-states (system) \ 1 |
\E prim-states j \ 117 |
|
\E prim-states float+ \ 78 |
|
\ \E prim-states (for) \ 68 |
|
\E prim-states 2rdrop \ 60 \ -- |
|
\ \E prim-states f! \ 14 |
|
\E prim-states >l \ 14 |
|
\ \E prim-states close-file \ 5 |
|
\ \E prim-states call-c \ 4 |
|
\ \E prim-states reposition-file \ 3 |
|
\E prim-states / \ 3 |
|
\ \E prim-states resize-file \ 2 |
|
\ \E prim-states free \ 2 |
|
\E prim-states 2/ \ 2 |
|
\ \E prim-states up! \ 1 |
|
\ \E prim-states stdin \ 1 |
|
\ \E prim-states key?-file \ 1 |
|
\ \E prim-states flush-icache \ 1 |
|
\ \E prim-states cmove \ 1 |
|
\ \E prim-states (system) \ 1 |
|
|
\ \E ' noop is output-nextp0 |
\E ' noop is output-nextp0 |
\ \E ' noop is output-nextp1 |
\E ' noop is output-nextp1 |
|
|
\ \E gen-transitions noop |
\E gen-transitions noop |
|
|
\ \F [ENDIF] |
\F [ENDIF] |