version 1.74, 2001/02/24 13:44:39
|
version 1.81, 2001/04/08 13:48:12
|
Line 74
|
Line 74
|
\ xt.* XT |
\ xt.* XT |
\ f83name.* F83Name * |
\ f83name.* F83Name * |
|
|
|
\E stack data-stack sp Cell |
|
\E stack fp-stack fp Float |
|
\E stack return-stack rp Cell |
|
\E |
\E get-current prefixes set-current |
\E get-current prefixes set-current |
\E |
\E |
\E s" Bool" single data-stack type-prefix f |
\E s" Bool" single data-stack type-prefix f |
Line 126
|
Line 130
|
\ these m4 macros would collide with identifiers |
\ these m4 macros would collide with identifiers |
undefine(`index') |
undefine(`index') |
undefine(`shift') |
undefine(`shift') |
|
undefine(`symbols') |
|
|
noop ( -- ) gforth |
noop ( -- ) gforth |
: |
: |
Line 139 execute ( xt -- ) core
|
Line 144 execute ( xt -- ) core
|
""Perform the semantics represented by the execution token, @i{xt}."" |
""Perform the semantics represented by the execution token, @i{xt}."" |
ip=IP; |
ip=IP; |
IF_spTOS(spTOS = sp[0]); |
IF_spTOS(spTOS = sp[0]); |
|
SUPER_END; |
EXEC(xt); |
EXEC(xt); |
|
|
perform ( a_addr -- ) gforth |
perform ( a_addr -- ) gforth |
Line 146 perform ( a_addr -- ) gforth
|
Line 152 perform ( a_addr -- ) gforth
|
/* and pfe */ |
/* and pfe */ |
ip=IP; |
ip=IP; |
IF_spTOS(spTOS = sp[0]); |
IF_spTOS(spTOS = sp[0]); |
|
SUPER_END; |
EXEC(*(Xt *)a_addr); |
EXEC(*(Xt *)a_addr); |
: |
: |
@ execute ; |
@ execute ; |
Line 1422 cache.""
|
Line 1429 cache.""
|
FLUSH_ICACHE(c_addr,u); |
FLUSH_ICACHE(c_addr,u); |
|
|
(bye) ( n -- ) gforth paren_bye |
(bye) ( n -- ) gforth paren_bye |
|
SUPER_END; |
return (Label *)n; |
return (Label *)n; |
|
|
(system) ( c_addr u -- wretval wior ) gforth peren_system |
(system) ( c_addr u -- wretval wior ) gforth peren_system |
Line 2135 Variable UP
|
Line 2143 Variable UP
|
wcall ( u -- ) gforth |
wcall ( u -- ) gforth |
IF_fpTOS(fp[0]=fpTOS); |
IF_fpTOS(fp[0]=fpTOS); |
FP=fp; |
FP=fp; |
sp=(SYSCALL(Cell(*)(Cell *, void *))u)(sp, &FP); |
sp=(Cell*)(SYSCALL(Cell(*)(Cell *, void *))u)(sp, &FP); |
fp=FP; |
fp=FP; |
IF_spTOS(spTOS=sp[0];) |
IF_spTOS(spTOS=sp[0];) |
IF_fpTOS(fpTOS=fp[0]); |
IF_fpTOS(fpTOS=fp[0]); |
Line 2343 while(a_addr != NULL)
|
Line 2351 while(a_addr != NULL)
|
|
|
\+ |
\+ |
|
|
|
\+peephole |
|
|
primtable ( -- wprimtable ) new |
primtable ( -- wprimtable ) new |
""wprimtable is a table containing the xts of the primitives indexed |
""wprimtable is a table containing the xts of the primitives indexed |
by sequence-number in prim (for use in prepare-peephole-table)."" |
by sequence-number in prim (for use in prepare-peephole-table)."" |
wprimtable = (Cell)primtable(symbols+DOESJUMP+1,MAX_SYMBOLS); |
wprimtable = (Cell)primtable(symbols+DOESJUMP+1,MAX_SYMBOLS-DOESJUMP-1); |
|
|
prepare-peephole-table ( wprimtable -- wpeeptable ) new prepare_peephole_opt |
prepare-peephole-table ( wprimtable -- wpeeptable ) new prepare_peephole_opt |
""wpeeptable is a data structure used by @code{peephole-opt}; it is |
""wpeeptable is a data structure used by @code{peephole-opt}; it is |
Line 2360 they cannot be combined, xt is 0.""
|
Line 2370 they cannot be combined, xt is 0.""
|
xt = peephole_opt(xt1, xt2, wpeeptable); |
xt = peephole_opt(xt1, xt2, wpeeptable); |
|
|
lit_plus = lit + |
lit_plus = lit + |
|
|
|
call ( #a_callee -- R:a_retaddr ) |
|
""Call callee (a variant of docol with inline argument)."" |
|
a_retaddr = (Cell *)IP; |
|
SET_IP((Xt *)a_callee); |
|
|
|
useraddr ( #u -- a_addr ) |
|
a_addr = (Cell *)(up+u); |
|
|
|
\+ |