--- gforth/peeprules.vmg 2002/10/12 19:06:37 1.3 +++ gforth/peeprules.vmg 2003/10/09 20:25:59 1.9 @@ -1,400 +1,215 @@ -super2 = lit @ -super6 = cells lit -super9 = cells lit + -super10 = cells lit + @ -super11 = cells lit + @ lit -super12 = cells lit + @ lit @ -super13 = cells lit + @ lit @ and -super16 = lit @ + -super18 = i call -super19 = dup lit -super20 = lit @ lit -super21 = cells lit + @ lit @ and lit -super22 = cells lit + @ lit @ and lit @ -super23 = cells lit + @ lit @ and lit @ = -super24 = cells lit + @ lit @ and lit @ = ;s -super26 = useraddr @ -super27 = over cells -super28 = over cells + -super29 = over cells + dup -super30 = over cells + dup @ -super31 = useraddr @ ;s -super36 = dup lit @ -super37 = @ ;s -super38 = lit @ * -super39 = lit @ @ -super40 = lit @ @ ;s -super41 = + lit -super42 = lit @ ?branch -super43 = over + -super44 = over + dup -super45 = lit @ call -super47 = lit @ * ;s -super48 = lit @ lit @ -super49 = ! ;s -super51 = lit call -super53 = lit @ + dup -super54 = lit @ and -super55 = 2drop drop -super56 = lit @ cells -super57 = dup lit @ and -super58 = 2drop drop lit -super59 = + lit call -super60 = lit @ cells lit -super61 = lit @ cells lit + -super62 = dup lit @ and dup -super63 = dup lit @ and dup lit -super64 = dup lit @ and dup lit @ -super65 = dup lit @ and dup lit @ = -super66 = dup lit @ and dup lit @ = swap -super67 = dup lit @ and dup lit @ = swap lit -super68 = dup lit @ and dup lit @ = swap lit @ -super69 = dup lit @ and dup lit @ = swap lit @ = -super70 = dup lit @ and dup lit @ = swap lit @ = or -super71 = dup lit @ and dup lit @ = swap lit @ = or ?branch -super72 = >r over -super73 = >r over + -super74 = >r over + dup -super75 = >r over + dup cells -super76 = >r over + dup cells lit -super77 = >r over + dup cells lit + -super78 = >r over + dup cells lit + @ -super79 = >r over + dup cells lit + @ r> -super80 = >r over + dup cells lit + @ r> + -super81 = >r over + dup cells lit + @ r> + over -super82 = >r over + dup cells lit + @ r> + over cells -super83 = >r over + dup cells lit + @ r> + over cells lit -super84 = >r over + dup cells lit + @ r> + over cells lit + -super85 = >r over + dup cells lit + @ r> + over cells lit + @ -super86 = >r over + dup cells lit + @ r> + over cells lit + @ ?branch -super87 = lit @ = -super88 = 2drop drop lit ;s -super90 = cells lit + @ lit @ and ;s -super91 = swap lit -super92 = swap lit @ -super93 = lit lit -super94 = lit ! -super95 = dup call -super96 = over + dup cells -super97 = over + dup cells lit -super98 = over + dup cells lit + -super99 = over + dup cells lit + @ -super100 = lit @ + ;s -super102 = + dup -super103 = lit - -super104 = + dup 1- -super105 = + dup 1- call -super106 = lit - ;s -super107 = within lit -super108 = within lit and -super110 = nip nip -super111 = lit @ and lit -super112 = swap lit @ * -super113 = swap lit @ * + -super114 = swap lit @ * + ;s -super115 = drop ;s -super116 = lit @ lit @ and -super118 = lit @ + call -super119 = lit @ + dup call -super120 = over + dup @ -super121 = cells lit @ -super122 = cells lit @ + -super123 = cells lit @ + ;s -super124 = lit @ + dup lit -super125 = drop (loop) -super126 = @ 2dup -super127 = @ 2dup < -super128 = @ 2dup < ?branch -super129 = lit 2@ -super132 = + ;s -super133 = lit @ and lit @ -super134 = lit @ and lit @ = -super135 = lit @ and lit @ = ?branch -super136 = lit @ = and -super137 = 2drop ;s -super139 = nip nip ;s -super140 = 2@ call -super141 = lit 2@ rot -super142 = lit 2@ rot xor -super143 = lit 2@ rot xor >r -super144 = lit 2@ rot xor >r xor -super145 = lit 2@ rot xor >r xor r> -super146 = lit 2@ rot xor >r xor r> lit -super147 = lit 2@ rot xor >r xor r> lit 2! -super148 = lit 2@ rot xor >r xor r> lit 2! ;s -super149 = lit @ = and + -super150 = lit @ = and + ;s -super151 = + lit @ -super152 = lit lit ! -super153 = lit @ lit call -super154 = 2dup call -super155 = lit @ = ;s -super156 = lit ! lit -super158 = dup lit cells -super159 = dup lit cells + -super160 = dup lit cells + 2@ -super161 = dup lit cells + 2@ rot -super162 = swap call -super163 = lit ! lit ! -super164 = lit @ branch -super165 = lit @ 1+ -super166 = dup cells -super167 = dup cells lit -super168 = dup cells lit + -super169 = dup cells lit + @ -super170 = lit @ 1+ lit -super171 = dup lit ! -super172 = dup 2@ -super173 = + lit @ = -super174 = + lit @ = ?branch -super175 = lit @ + dup lit call -super176 = lit @ lit @ and 0= -super177 = lit @ lit @ and 0= ?branch -super178 = drop lit -super179 = drop lit @ -super181 = cells swap -super182 = cells swap cells -super183 = cells swap cells lit -super184 = cells swap cells lit + -super185 = nip nip lit -super186 = nip nip lit @ -super187 = nip nip lit @ and -super188 = nip nip lit @ and dup -super189 = nip nip lit @ and dup lit -super190 = nip nip lit @ and dup lit @ -super191 = nip nip lit @ and dup lit @ = -super192 = nip nip lit @ and dup lit @ = swap -super193 = nip nip lit @ and dup lit @ = swap lit -super194 = nip nip lit @ and dup lit @ = swap lit @ -super195 = nip nip lit @ and dup lit @ = swap lit @ = -super196 = nip nip lit @ and dup lit @ = swap lit @ = or -super197 = nip nip lit @ and dup lit @ = swap lit @ = or ;s -super198 = over call -super199 = lit @ + dup lit + -super200 = lit @ lit @ lit -super201 = cells lit + @ 0= -super202 = cells lit + @ 0= ;s -super203 = lit @ and lit * -super204 = lit @ and lit * + -super205 = lit @ and lit * + lit -super206 = lit @ and lit * + lit call -super207 = lit @ dup -super208 = lit @ dup lit -super209 = 0= ?branch -super210 = or over -super211 = or over lit -super212 = lit @ lit @ lit ! -super213 = lit @ lit @ lit ! lit -super214 = lit @ lit @ lit ! lit ! -super215 = lit @ lit @ lit ! lit ! lit -super216 = lit @ lit @ lit ! lit ! lit @ -super217 = lit @ lit @ lit ! lit ! lit @ 0= -super218 = lit @ lit @ lit ! lit ! lit @ 0= lit -super219 = lit @ lit @ lit ! lit ! lit @ 0= lit ! -super220 = lit @ lit @ lit ! lit ! lit @ 0= lit ! lit -super221 = lit @ lit @ lit ! lit ! lit @ 0= lit ! lit @ -super222 = lit @ lit @ lit ! lit ! lit @ 0= lit ! lit @ negate -super223 = lit @ lit @ lit ! lit ! lit @ 0= lit ! lit @ negate lit -super224 = lit @ lit @ lit ! lit ! lit @ 0= lit ! lit @ negate lit ! -super225 = lit @ lit @ lit ! lit ! lit @ 0= lit ! lit @ negate lit ! ;s -super226 = lit @ 1+ lit ! -super227 = dup lit ! cells -super228 = dup lit ! cells lit -super229 = dup lit ! cells lit + -super230 = dup lit ! cells lit + @ -super231 = dup lit ! cells lit + @ dup -super232 = dup lit ! cells lit + @ dup lit -super233 = dup lit ! cells lit + @ dup lit ! -super234 = dup lit ! cells lit + @ dup lit ! ;s -super235 = lit @ and cells -super236 = lit @ and cells lit -super237 = lit @ and cells lit + -super238 = over lit -super239 = dup 2@ lit -super240 = dup 2@ lit 2@ -super241 = dup 2@ lit 2@ d= -super242 = lit @ and dup -super243 = lit @ and dup lit -super244 = dup lit @ call -super245 = lit /mod -super246 = lit /mod rot -super247 = lit /mod rot lit -super248 = lit /mod rot lit /mod -super249 = lit /mod rot lit /mod swap -super250 = lit /mod rot lit /mod swap >r -super251 = lit /mod rot lit /mod swap >r - -super252 = lit /mod rot lit /mod swap >r - swap -super253 = lit /mod rot lit /mod swap >r - swap r> -super254 = lit /mod rot lit /mod swap >r - swap r> - -super255 = lit /mod rot lit /mod swap >r - swap r> - swap -super256 = lit /mod rot lit /mod swap >r - swap r> - swap ;s -super257 = lit and -super258 = dup lit @ = -super260 = dup lit @ = over -super261 = dup lit @ = over lit -super262 = dup lit @ = over lit @ -super263 = dup lit @ = over lit @ = -super264 = dup lit @ = over lit @ = or -super265 = lit @ and dup lit call -super267 = abs swap -super268 = abs swap abs -super269 = abs swap abs = -super270 = abs swap abs = ;s -super271 = lit @ + lit -super272 = dup lit cells + 2@ rot @ -super273 = dup lit cells + 2@ rot @ ;s -super274 = lit ! call -super275 = cells lit + ! -super276 = cells lit + ! ;s -super277 = 0= swap -super278 = 0= swap 0= -super279 = 0= swap 0= xor -super280 = 0= swap 0= xor ;s -super281 = lit lit call -super282 = lit lit ! call -super284 = lit @ + dup cells -super285 = lit @ + dup cells lit -super286 = lit @ + dup cells lit + -super287 = lit @ + dup cells lit + @ -super288 = dup lit cells + 2@ rot 2@ -super289 = dup lit cells + 2@ rot 2@ ;s -super290 = dup 2@ lit 2@ d= ?branch -super291 = dup cells lit + @ call -super292 = lit @ swap -super293 = 2drop drop lit @ -super294 = lit @ i -super295 = lit @ dup lit @ -super296 = lit @ i call -super297 = lit @ = ?branch -super298 = lit @ * lit -super299 = lit @ * lit @ -super300 = lit @ lit @ 2>r -super301 = or ;s -super302 = lit lit ! lit -super303 = lit @ + dup lit + 2@ -super304 = lit @ + dup lit + 2@ rot -super305 = lit @ + dup lit + 2@ rot lit -super306 = lit @ + dup lit + 2@ rot lit + -super307 = lit @ + dup lit + 2@ rot lit + @ -super308 = lit @ + dup lit + 2@ rot lit + @ ;s -super309 = lit @ lit @ and cells -super310 = lit @ lit @ and cells lit -super311 = lit @ lit @ and cells lit + -super312 = lit @ lit @ * -super313 = lit @ lit @ * lit -super314 = lit @ lit @ * lit + -super315 = lit @ lit @ * lit + ;s -super316 = lit ! lit ! call -super317 = lit @ 1+ lit ! ;s -super318 = i cells -super319 = i cells lit -super320 = i cells lit + -super321 = i cells lit + @ -super322 = i cells lit + @ dup -super323 = i cells lit + @ dup lit -super324 = lit @ lit lit -super325 = lit @ lit lit @ -super326 = lit @ lit lit @ * -super327 = lit fill -super328 = lit fill ;s -super329 = lit @ 0= -super330 = lit @ 0= ?branch -super331 = i cells lit + @ dup lit @ -super332 = lit @ 1- -super333 = lit @ 1- lit -super334 = lit @ 1- lit ! -super335 = lit @ 1- lit ! ;s -super336 = lit @ + lit + -super337 = lit @ + lit + @ -super338 = lit @ + lit + @ ;s -super339 = lit @ lit * -super340 = lit @ lit * lit -super341 = i cells lit + @ dup lit @ = -super342 = i cells lit + @ dup lit @ = ?branch -super343 = lit @ lit lit @ * call -super344 = lit @ + dup lit + @ -super345 = lit @ + dup lit + @ swap -super346 = lit @ + dup lit + @ swap lit -super347 = lit @ + dup lit + @ swap lit + -super348 = lit @ + dup lit + @ swap lit + @ -super349 = lit @ + dup lit + @ swap lit + @ ;s -super350 = lit and + -super352 = lit @ lit * lit @ -super353 = lit @ lit * lit @ * -super354 = lit @ lit * lit @ * lit -super355 = lit @ lit * lit @ * lit + -super356 = lit @ lit * lit @ * lit + ;s -super357 = tuck ! -super358 = tuck ! lit -super359 = tuck ! lit cells -super360 = tuck ! lit cells + -super361 = tuck ! lit cells + 2! -super362 = tuck ! lit cells + 2! ;s -super363 = swap lit @ + -super364 = swap lit @ + swap -super365 = swap lit @ + swap 2@ -super366 = swap lit @ + swap 2@ d0= -super367 = swap lit @ + swap 2@ d0= ?branch -super368 = lit lit @ -super369 = lit @ * lit @ lit -super370 = lit @ * lit @ lit and -super371 = lit @ * lit @ lit and lit -super372 = lit @ * lit @ lit and lit @ -super373 = lit @ * lit @ lit and lit @ + -super374 = lit @ * lit @ lit and lit @ + + -super375 = lit @ * lit @ lit and lit @ + + ;s -super376 = lit and ;s -super377 = dup lit call -super378 = over lit @ -super379 = dup 0< -super380 = >r call -super381 = lit * -super382 = lit * + -super383 = or over lit + -super384 = or over lit + call -super385 = + call -super387 = or swap -super388 = or swap lit -super389 = r> 2r> -super390 = lit @ dup lit @ * -super391 = lit @ dup lit @ * + -super392 = lit @ dup lit @ * + lit -super393 = lit @ dup lit @ * + lit @ -super394 = lit @ dup lit @ * + lit @ * -super395 = lit @ dup lit @ * + lit @ * lit -super396 = lit @ dup lit @ * + lit @ * lit + -super397 = lit @ dup lit @ * + lit @ * lit + ;s -super398 = over + dup lit -super399 = over + dup lit @ -super400 = over + dup lit @ = -super401 = over + dup lit @ = over -super402 = over + dup lit @ = over cells -super403 = over + dup lit @ = over cells lit -super404 = over + dup lit @ = over cells lit + -super405 = over + dup lit @ = over cells lit + @ -super406 = over + dup lit @ = over cells lit + @ or -super407 = over + dup lit @ = over cells lit + @ or ?branch -super408 = lit + -super409 = + lit @ lit -super410 = lit @ + @ -super411 = lit @ + @ ;s -super412 = lit @ lit @ and ?branch -super413 = lit ! lit lit -super414 = lit ! lit lit ! -super415 = swap lit @ and -super416 = nip swap -super417 = nip swap negate -super418 = nip swap negate call -super419 = swap lit @ and ?branch -super420 = lit lit ! lit @ -super421 = - lit -super422 = - lit cells -super423 = - lit cells - -super424 = - lit cells - call -super425 = lit ! lit lit ! ;s -super426 = lit @ dup lit cells -super427 = lit @ dup lit cells - -super428 = lit @ dup lit cells - @ -super429 = lit @ dup lit cells - @ lit -super430 = lit @ dup lit cells - @ lit ! -super431 = lit @ dup lit cells - @ lit ! dup +\ taken from David Gregg's EuroForth 2001 paper; omitted some sequences +super1 = lit + +super2 = lit call +super3 = lit @ +super4 = lit @ call +super5 = @ call +super6 = lit ! +super7 = lit lit +super8 = dup lit +super9 = ! lit +super10 = lit ! lit +super11 = ! ;s +super12 = lit + @ +super13 = 0= ?branch +super14 = dup call +super15 = useraddr @ +super16 = + @ +super17 = lit @ ?branch +super18 = lit ! ;s +super19 = lit @ and +super20 = = ?branch +super21 = lit lit ! +super22 = @ ?branch +super23 = useraddr ! +super24 = dup ?branch +super25 = @ ;s +super26 = lit @ + +super27 = dup @ + +\F 0 [if] + +\ \E prim-states ;s \ 2950159 +\E prim-states lit \ 2802835 +\ \E prim-states call \ 2558373 +\E prim-states @ \ 2244351 +\E branch-states ?branch \ 1134432 +\E prim-states lit@ \ 1051813 +\E prim-states swap \ 737988 +\E S0 S2 state-prim swap +\E S1 S2 state-prim swap +\E S2 S3 state-prim swap +\E S3 S2 state-prim swap +\E prim-states c@ \ 651406 +\E prim-states = \ 590006 +\E prim-states 0= \ 584487 +\E prim-states dup \ 566855 +\E S0 S1 state-prim dup +\E prim-states + \ 566003 +\E prim-states i \ 502908 +\E prim-states +! \ 448925 +\ \E prim-states branch \ 409561 +\ \E prim-states (loop) \ 379646 +\ \E prim-states lp! \ 326743 +\E prim-states and \ 309427 +\E prim-states useraddr \ 303254 +\E prim-states over \ 283556 +\E S0 S1 state-prim over +\E S1 S2 state-prim over +\E S2 S1 state-prim over +\E S3 S2 state-prim over +\E prim-states negate \ 257417 +\E prim-states cells \ 254644 +\E prim-states rot \ 220273 +\E S3 S1 state-prim rot +\E S2 S3 state-prim rot +\E S1 S3 state-prim rot +\E S0 S3 state-prim rot +\E prim-states ! \ 218672 +\E prim-states 2dup \ 211315 +\E S0 S2 state-prim 2dup +\E S1 S3 state-prim 2dup +\E S2 S2 state-prim 2dup +\E S3 S1 state-prim 2dup +\ \E branch-states lit-perform \ 188331 +\E prim-states <> \ 179502 +\E prim-states c! \ 179332 +\E prim-states lit+ \ 179156 +\E prim-states drop \ 173995 +\E S0 S0 state-prim drop +\E prim-states lshift \ 164671 +\E prim-states /mod \ 164670 +\E prim-states >r \ 145247 +\E prim-states r> \ 133792 +\ \E branch-states does-exec \ 120944 +\E prim-states cell+ \ 116183 +\E prim-states lp+!# \ 106697 \ -- +\E prim-states - \ 106245 +\E prim-states unloop \ 98938 \ -- +\E prim-states lp+ \ 87190 \ -- +\E prim-states >= \ 80994 +\E prim-states tuck \ 78696 +\E S2 S2 state-prim tuck +\E prim-states /string \ 78595 +\E prim-states char+ \ 77542 +\ \E prim-states ?dup \ 76850 +\E prim-states @local0 \ 75322 +\E prim-states min \ 75264 +\ \E prim-states compare \ 65603 +\E branch-states (u+do) \ 63823 +\ \E prim-states (read-line) \ 63823 +\E prim-states 2>r \ 62646 +\E prim-states 2r> \ 62644 +\E prim-states 2r@ \ 61338 +\E prim-states 2@ \ 61067 +\E prim-states nip \ 54961 +\E S1 S1 state-prim nip +\E S0 S1 state-prim nip +\E prim-states within \ 51075 +\E prim-states 1- \ 47441 +\E branch-states execute \ 46674 +\E prim-states lp- \ 45385 +\E branch-states perform \ 38756 +\E prim-states xor \ 35599 +\E prim-states @local# \ 34586 +\ \E prim-states pick \ 32015 +\E prim-states u> \ 29373 +\E prim-states -rot \ 26211 +\E S3 S2 state-prim -rot +\E S1 S3 state-prim -rot +\E prim-states 2drop \ 25418 +\E S0 S0 state-prim 2drop +\E S1 S0 state-prim 2drop +\ \E prim-states (tablelfind) \ 22243 +\E prim-states or \ 21587 +\E prim-states @local2 \ 20859 +\E branch-states (+loop) \ 20006 +\E prim-states 1+ \ 17944 +\E prim-states rdrop \ 17902 +\E branch-states (?do) \ 17348 +\E prim-states max \ 16948 +\E prim-states 2* \ 15606 +\ \E prim-states filename-match \ 15003 +\ \E prim-states (listlfind) \ 13074 +\ \E prim-states sp@ \ 12741 +\ \E prim-states fp@ \ 12384 +\ \E prim-states um/mod \ 12288 +\E prim-states 2! \ 11904 +\ \E prim-states fill \ 10781 +\ \E prim-states (parse-white) \ 10624 +\E branch-states (do) \ 10516 +\ \E prim-states (hashkey1) \ 10239 +\E prim-states u< \ 9602 +\ \E prim-states write-file \ 8973 +\E prim-states count \ 8873 +\ \E prim-states rp@ \ 8410 +\E prim-states 0< \ 8380 +\E prim-states < \ 7741 +\E prim-states @local1 \ 7458 +\ \E prim-states move \ 7050 +\E prim-states u>= \ 6138 +\E branch-states (+do) \ 5863 +\ \E prim-states va-return-double \ 5517 +\E prim-states um* \ 5342 +\E prim-states toupper \ 3517 +\ \E prim-states f@local1 \ 2907 +\ \E prim-states rp! \ 2859 +\ \E prim-states ?dup-?branch \ 2829 +\E prim-states d+ \ 2671 +\ \E prim-states ftuck \ 2636 +\ \E prim-states read-file \ 2623 +\ \E prim-states ms \ 2454 +\ \E prim-states (s+loop) \ 2429 +\ \E prim-states allocate \ 1869 +\E prim-states * \ 1520 +\E prim-states 0<> \ 925 +\ \E prim-states noop \ 715 +\E prim-states aligned \ 714 +\E prim-states u<= \ 684 +\E prim-states i' \ 684 +\E prim-states > \ 411 +\ \E prim-states (hashlfind) \ 397 +\E prim-states 2swap \ 336 +\E S0 S3 state-prim 2swap +\E S1 S3 state-prim 2swap +\E prim-states laddr# \ 335 +\ \E prim-states faxpy \ 286 +\ \E prim-states (next) \ 272 +\ \E prim-states (-loop)-lp+!# \ 248 +\E prim-states <= \ 199 +\E prim-states invert \ 170 +\E branch-states (-do) \ 169 +\E prim-states 2over \ 165 +\E S0 S2 state-prim 2over +\E S1 S3 state-prim 2over +\E prim-states under+ \ 154 +\E prim-states dnegate \ 128 +\E prim-states u<> \ 128 +\E prim-states 0> \ 122 +\ \E prim-states (loop)-lp+!# \ 118 +\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-nextp1 + +\E gen-transitions noop + +\F [ENDIF]