| |
|
| branch -- gforth |
branch -- gforth |
| branch: |
branch: |
| ip = (Xt *)(((Cell)IP)+(Cell)NEXT_INST); |
SET_IP((Xt *)(((Cell)IP)+(Cell)NEXT_INST)); |
| NEXT_P0; |
|
| : |
: |
| r> dup @ + >r ; |
r> dup @ + >r ; |
| |
|
| \ this is non-syntactical: code must open a brace that is closed by the macro |
\ this is non-syntactical: code must open a brace that is closed by the macro |
| define(condbranch, |
define(condbranch, |
| $1 $2 |
$1 $2 |
| $3 ip = (Xt *)(((Cell)IP)+(Cell)NEXT_INST); |
$3 SET_IP((Xt *)(((Cell)IP)+(Cell)NEXT_INST)); |
| NEXT_P0; |
|
| NEXT; |
NEXT; |
| } |
} |
| else |
else |
| if (f==0) { |
if (f==0) { |
| sp++; |
sp++; |
| IF_TOS(TOS = sp[0]); |
IF_TOS(TOS = sp[0]); |
| ip = (Xt *)(((Cell)IP)+(Cell)NEXT_INST); |
SET_IP((Xt *)(((Cell)IP)+(Cell)NEXT_INST)); |
| NEXT_P0; |
|
| NEXT; |
NEXT; |
| } |
} |
| else |
else |
| invocation */ |
invocation */ |
| if (f!=0) { |
if (f!=0) { |
| sp--; |
sp--; |
| ip = (Xt *)(((Cell)IP)+(Cell)NEXT_INST); |
SET_IP((Xt *)(((Cell)IP)+(Cell)NEXT_INST)); |
| NEXT_P0; |
|
| NEXT; |
NEXT; |
| } |
} |
| else |
else |
| |
|
| ;s -- gforth semis |
;s -- gforth semis |
| ""The primitive compiled by @code{EXIT}."" |
""The primitive compiled by @code{EXIT}."" |
| ip = (Xt *)(*rp++); |
SET_IP((Xt *)(*rp++)); |
| NEXT_P0; |
|
| |
|
| >r w -- core to_r |
>r w -- core to_r |
| *--rp = w; |
*--rp = w; |