version 1.91, 2002/01/20 19:04:10
|
version 1.93, 2002/06/02 10:31:28
|
Line 53
|
Line 53
|
\ your code does not fall through, the results are not stored into the |
\ your code does not fall through, the results are not stored into the |
\ stack. Use different names on both sides of the '--', if you change a |
\ stack. Use different names on both sides of the '--', if you change a |
\ value (some stores to the stack are optimized away). |
\ value (some stores to the stack are optimized away). |
\ |
\ |
\ |
\ For superinstructions the syntax is: |
|
\ |
|
\ forth-name [/ c-name] = forth-name forth-name ... |
|
\ |
\ |
\ |
\ The stack variables have the following types: |
\ The stack variables have the following types: |
\ |
\ |
\ name matches type |
\ name matches type |
\ f.* Bool |
\ f.* Bool |
\ c.* Char |
\ c.* Char |
\ [nw].* Cell |
\ [nw].* Cell |
\ u.* UCell |
\ u.* UCell |
\ d.* DCell |
\ d.* DCell |
\ ud.* UDCell |
\ ud.* UDCell |
Line 2409 a_addr = (Cell *)(up+u);
|
Line 2412 a_addr = (Cell *)(up+u);
|
compile-prim ( xt1 -- xt2 ) new compile_prim |
compile-prim ( xt1 -- xt2 ) new compile_prim |
xt2 = (Xt)compile_prim((Label)xt1); |
xt2 = (Xt)compile_prim((Label)xt1); |
|
|
lit@ ( #a_addr -- w ) new lit_fetch |
lit@ / lit_fetch = lit @ |
w = *a_addr; |
|
|
|
lit-perform ( #a_addr -- ) new lit_perform |
lit-perform ( #a_addr -- ) new lit_perform |
ip=IP; |
ip=IP; |
SUPER_END; |
SUPER_END; |
EXEC(*(Xt *)a_addr); |
EXEC(*(Xt *)a_addr); |
|
|
lit+ ( #n1 n2 -- n3 ) new lit_plus |
lit+ / lit_plus = lit + |
n3 = n1 + n2; |
|
|
|
does-exec ( #a_cfa -- R:nest a_pfa ) new does_exec |
does-exec ( #a_cfa -- R:nest a_pfa ) new does_exec |
a_pfa = PFA(a_cfa); |
a_pfa = PFA(a_cfa); |