--- gforth/prim 2002/01/20 19:04:10 1.91 +++ gforth/prim 2002/06/02 10:31:28 1.93 @@ -53,15 +53,18 @@ \ 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 \ 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: \ \ name matches type \ f.* Bool \ c.* Char -\ [nw].* Cell +\ [nw].* Cell \ u.* UCell \ d.* DCell \ ud.* UDCell @@ -2409,16 +2412,14 @@ a_addr = (Cell *)(up+u); compile-prim ( xt1 -- xt2 ) new compile_prim xt2 = (Xt)compile_prim((Label)xt1); -lit@ ( #a_addr -- w ) new lit_fetch -w = *a_addr; +lit@ / lit_fetch = lit @ lit-perform ( #a_addr -- ) new lit_perform ip=IP; SUPER_END; EXEC(*(Xt *)a_addr); -lit+ ( #n1 n2 -- n3 ) new lit_plus -n3 = n1 + n2; +lit+ / lit_plus = lit + does-exec ( #a_cfa -- R:nest a_pfa ) new does_exec a_pfa = PFA(a_cfa);