[gforth] / gforth / peeprules.vmg  

gforth: gforth/peeprules.vmg


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

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help