Annotation of gforth/peeprules.vmg, revision 1.15
1.14 anton 1: \ Gforth superinstructions and stack caching replicas
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:
1.8 anton 21: \ taken from David Gregg's EuroForth 2001 paper; omitted some sequences
1.12 anton 22: \ eliminated for gforth-native:
23: \ 1) sequences containing call
24: \ 2) sequences with immediate arguments not in the first position
1.15 ! anton 25:
! 26: \ no new prim-nums for supers and state-replicas
! 27: \E ' noop is output-c-prim-num
! 28:
1.7 anton 29: super1 = lit +
1.12 anton 30: \ super2 = lit call
1.7 anton 31: super3 = lit @
1.12 anton 32: \ super4 = lit @ call
33: \ super5 = @ call
1.8 anton 34: super6 = lit !
1.12 anton 35: \ super7 = lit lit
36: \ super8 = dup lit
37: \ super9 = ! lit
38: \ super10 = lit ! lit
1.8 anton 39: super11 = ! ;s
40: super12 = lit + @
1.12 anton 41: \ super13 = 0= ?branch
42: \ super14 = dup call
1.8 anton 43: super15 = useraddr @
44: super16 = + @
1.12 anton 45: \ super17 = lit @ ?branch
1.8 anton 46: super18 = lit ! ;s
47: super19 = lit @ and
1.13 anton 48: \ super20 = = ?branch
1.12 anton 49: \ super21 = lit lit !
50: \ super22 = @ ?branch
1.8 anton 51: super23 = useraddr !
1.12 anton 52: \ super24 = dup ?branch
1.8 anton 53: super25 = @ ;s
54: super26 = lit @ +
55: super27 = dup @
1.9 anton 56:
1.11 anton 57: \F 0 [if]
1.9 anton 58:
1.15 ! anton 59: \ \E prim-states ;s \ 2950159
! 60: \E prim-states lit \ 2802835
! 61: \ \E prim-states call \ 2558373
! 62: \E prim-states @ \ 2244351
! 63: \E branch-states ?branch \ 1134432
! 64: \E prim-states lit@ \ 1051813
! 65: \E prim-states swap \ 737988
! 66: \ \E S0 S2 state-prim swap
! 67: \ \E S1 S2 state-prim swap
! 68: \ \E S2 S3 state-prim swap
! 69: \ \E S3 S2 state-prim swap
! 70: \E prim-states c@ \ 651406
! 71: \E prim-states = \ 590006
! 72: \E prim-states 0= \ 584487
! 73: \E prim-states dup \ 566855
! 74: \E S0 S1 state-prim dup
! 75: \E prim-states + \ 566003
! 76: \E prim-states i \ 502908
! 77: \E prim-states +! \ 448925
! 78: \ \E prim-states branch \ 409561
! 79: \ \E prim-states (loop) \ 379646
! 80: \ \E prim-states lp! \ 326743
! 81: \E prim-states and \ 309427
! 82: \E prim-states useraddr \ 303254
! 83: \E prim-states over \ 283556
! 84: \E S0 S1 state-prim over
! 85: \ \E S1 S2 state-prim over
! 86: \ \E S2 S1 state-prim over
! 87: \ \E S3 S2 state-prim over
! 88: \E prim-states negate \ 257417
! 89: \E prim-states cells \ 254644
! 90: \E prim-states rot \ 220273
! 91: \ \E S3 S1 state-prim rot
! 92: \ \E S2 S3 state-prim rot
! 93: \ \E S1 S3 state-prim rot
! 94: \ \E S0 S3 state-prim rot
! 95: \E prim-states ! \ 218672
! 96: \E prim-states 2dup \ 211315
! 97: \E S0 S1 state-prim 2dup
! 98: \ \E S0 S2 state-prim 2dup
! 99: \ \E S1 S3 state-prim 2dup
! 100: \ \E S2 S2 state-prim 2dup
! 101: \ \E S3 S1 state-prim 2dup
! 102: \ \E branch-states lit-perform \ 188331
! 103: \E prim-states <> \ 179502
! 104: \E prim-states c! \ 179332
! 105: \E prim-states lit+ \ 179156
! 106: \E prim-states drop \ 173995
! 107: \E S0 S0 state-prim drop
! 108: \E prim-states lshift \ 164671
! 109: \E prim-states /mod \ 164670
! 110: \E prim-states >r \ 145247
! 111: \E prim-states r> \ 133792
! 112: \ \E branch-states does-exec \ 120944
! 113: \E prim-states cell+ \ 116183
! 114: \E prim-states lp+!# \ 106697 \ --
! 115: \E prim-states - \ 106245
! 116: \E prim-states unloop \ 98938 \ --
! 117: \E prim-states lp+ \ 87190 \ --
! 118: \E prim-states >= \ 80994
! 119: \E prim-states tuck \ 78696
! 120: \ \E S2 S2 state-prim tuck
! 121: \E prim-states /string \ 78595
! 122: \E prim-states char+ \ 77542
! 123: \ \E prim-states ?dup \ 76850
! 124: \E prim-states @local0 \ 75322
! 125: \E prim-states min \ 75264
! 126: \ \E prim-states compare \ 65603
! 127: \E branch-states (u+do) \ 63823
! 128: \ \E prim-states (read-line) \ 63823
! 129: \E prim-states 2>r \ 62646
! 130: \E prim-states 2r> \ 62644
! 131: \E prim-states 2r@ \ 61338
! 132: \E prim-states 2@ \ 61067
! 133: \E prim-states nip \ 54961
! 134: \E S1 S1 state-prim nip
! 135: \E S0 S1 state-prim nip
! 136: \E prim-states within \ 51075
! 137: \E prim-states 1- \ 47441
! 138: \E branch-states execute \ 46674
! 139: \E prim-states lp- \ 45385
! 140: \E branch-states perform \ 38756
! 141: \E prim-states xor \ 35599
! 142: \E prim-states @local# \ 34586
! 143: \ \E prim-states pick \ 32015
! 144: \E prim-states u> \ 29373
! 145: \E prim-states -rot \ 26211
! 146: \ \E S3 S2 state-prim -rot
! 147: \ \E S1 S3 state-prim -rot
! 148: \E prim-states 2drop \ 25418
! 149: \E S0 S0 state-prim 2drop
! 150: \E S1 S0 state-prim 2drop
! 151: \ \E prim-states (tablelfind) \ 22243
! 152: \E prim-states or \ 21587
! 153: \E prim-states @local2 \ 20859
! 154: \E branch-states (+loop) \ 20006
! 155: \E prim-states 1+ \ 17944
! 156: \E prim-states rdrop \ 17902
! 157: \E branch-states (?do) \ 17348
! 158: \E prim-states max \ 16948
! 159: \E prim-states 2* \ 15606
! 160: \ \E prim-states filename-match \ 15003
! 161: \ \E prim-states (listlfind) \ 13074
! 162: \ \E prim-states sp@ \ 12741
! 163: \ \E prim-states fp@ \ 12384
! 164: \ \E prim-states um/mod \ 12288
! 165: \E prim-states 2! \ 11904
! 166: \ \E prim-states fill \ 10781
! 167: \ \E prim-states (parse-white) \ 10624
! 168: \E branch-states (do) \ 10516
! 169: \ \E prim-states (hashkey1) \ 10239
! 170: \E prim-states u< \ 9602
! 171: \ \E prim-states write-file \ 8973
! 172: \E prim-states count \ 8873
! 173: \ \E prim-states rp@ \ 8410
! 174: \E prim-states 0< \ 8380
! 175: \E prim-states < \ 7741
! 176: \E prim-states @local1 \ 7458
! 177: \ \E prim-states move \ 7050
! 178: \E prim-states u>= \ 6138
! 179: \E branch-states (+do) \ 5863
! 180: \ \E prim-states va-return-double \ 5517
! 181: \E prim-states um* \ 5342
! 182: \E prim-states toupper \ 3517
! 183: \ \E prim-states f@local1 \ 2907
! 184: \ \E prim-states rp! \ 2859
! 185: \ \E prim-states ?dup-?branch \ 2829
! 186: \E prim-states d+ \ 2671
! 187: \ \E prim-states ftuck \ 2636
! 188: \ \E prim-states read-file \ 2623
! 189: \ \E prim-states ms \ 2454
! 190: \ \E prim-states (s+loop) \ 2429
! 191: \ \E prim-states allocate \ 1869
! 192: \E prim-states * \ 1520
! 193: \E prim-states 0<> \ 925
! 194: \ \E prim-states noop \ 715
! 195: \E prim-states aligned \ 714
! 196: \E prim-states u<= \ 684
! 197: \E prim-states i' \ 684
! 198: \E prim-states > \ 411
! 199: \ \E prim-states (hashlfind) \ 397
! 200: \E prim-states 2swap \ 336
! 201: \ \E S0 S3 state-prim 2swap
! 202: \ \E S1 S3 state-prim 2swap
! 203: \E prim-states laddr# \ 335
! 204: \ \E prim-states faxpy \ 286
! 205: \ \E prim-states (next) \ 272
! 206: \ \E prim-states (-loop)-lp+!# \ 248
! 207: \E prim-states <= \ 199
! 208: \E prim-states invert \ 170
! 209: \E branch-states (-do) \ 169
! 210: \E prim-states 2over \ 165
! 211: \ \E S0 S2 state-prim 2over
! 212: \ \E S1 S3 state-prim 2over
! 213: \E prim-states under+ \ 154
! 214: \E prim-states dnegate \ 128
! 215: \E prim-states u<> \ 128
! 216: \E prim-states 0> \ 122
! 217: \ \E prim-states (loop)-lp+!# \ 118
! 218: \E prim-states j \ 117
! 219: \E prim-states float+ \ 78
! 220: \ \E prim-states (for) \ 68
! 221: \E prim-states 2rdrop \ 60 \ --
! 222: \ \E prim-states f! \ 14
! 223: \E prim-states >l \ 14
! 224: \ \E prim-states close-file \ 5
! 225: \ \E prim-states call-c \ 4
! 226: \ \E prim-states reposition-file \ 3
! 227: \E prim-states / \ 3
! 228: \ \E prim-states resize-file \ 2
! 229: \ \E prim-states free \ 2
! 230: \E prim-states 2/ \ 2
! 231: \ \E prim-states up! \ 1
! 232: \ \E prim-states stdin \ 1
! 233: \ \E prim-states key?-file \ 1
! 234: \ \E prim-states flush-icache \ 1
! 235: \ \E prim-states cmove \ 1
! 236: \ \E prim-states (system) \ 1
1.9 anton 237:
1.15 ! anton 238: \E ' noop is output-nextp0
! 239: \E ' noop is output-nextp1
1.9 anton 240:
1.15 ! anton 241: \E gen-transitions noop
1.9 anton 242:
1.11 anton 243: \F [ENDIF]
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>