version 1.9, 1998/12/20 23:17:56
|
version 1.10, 1999/01/08 16:58:31
|
Line 219 static int ufileattr[6]= {
|
Line 219 static int ufileattr[6]= {
|
#define DOCFA Xt cfa; GETCFA(cfa) |
#define DOCFA Xt cfa; GETCFA(cfa) |
#endif |
#endif |
|
|
|
#ifdef GFORTH_DEBUGGING |
|
/* define some VM registers as global variables, so they survive exceptions; |
|
global register variables are not up to the task (according to the |
|
GNU C manual) */ |
|
Xt *ip; |
|
Cell *rp; |
|
#endif |
|
|
Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0) |
Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0) |
/* executes code at ip, if ip!=NULL |
/* executes code at ip, if ip!=NULL |
returns array of machine code labels (for use in a loader), if ip==NULL |
returns array of machine code labels (for use in a loader), if ip==NULL |
*/ |
*/ |
{ |
{ |
register Xt *ip IPREG = ip0; |
#ifndef GFORTH_DEBUGGING |
|
register Xt *ip IPREG; |
|
register Cell *rp RPREG; |
|
#endif |
register Cell *sp SPREG = sp0; |
register Cell *sp SPREG = sp0; |
register Cell *rp RPREG = rp0; |
|
register Float *fp FPREG = fp0; |
register Float *fp FPREG = fp0; |
register Address lp LPREG = lp0; |
register Address lp LPREG = lp0; |
#ifdef CFA_NEXT |
#ifdef CFA_NEXT |
Line 258 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
Line 268 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
CPU_DEP2 |
CPU_DEP2 |
#endif |
#endif |
|
|
|
ip = ip0; |
|
rp = rp0; |
#ifdef DEBUG |
#ifdef DEBUG |
fprintf(stderr,"ip=%x, sp=%x, rp=%x, fp=%x, lp=%x, up=%x\n", |
fprintf(stderr,"ip=%x, sp=%x, rp=%x, fp=%x, lp=%x, up=%x\n", |
(unsigned)ip,(unsigned)sp,(unsigned)rp, |
(unsigned)ip,(unsigned)sp,(unsigned)rp, |