version 1.4, 1994/05/05 15:46:42
|
version 1.5, 1994/05/07 14:55:47
|
Line 86 int emitcounter;
|
Line 86 int emitcounter;
|
|
|
static char* fileattr[6]={"r","rb","r+","r+b","w+","w+b"}; |
static char* fileattr[6]={"r","rb","r+","r+b","w+","w+b"}; |
|
|
Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp) |
Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp, Address lp) |
/* 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 |
This is very preliminary, as the bootstrap architecture is not yet decided |
This is very preliminary, as the bootstrap architecture is not yet decided |
*/ |
*/ |
{ |
{ |
Xt cfa; |
Xt cfa; |
Address lp=NULL; |
|
Address up=NULL; |
Address up=NULL; |
static Label symbols[]= { |
static Label symbols[]= { |
&&docol, |
&&docol, |
Line 174 Label *engine(Xt *ip, Cell *sp, Cell *rp
|
Line 173 Label *engine(Xt *ip, Cell *sp, Cell *rp
|
#endif |
#endif |
#ifdef USE_TOS |
#ifdef USE_TOS |
*sp-- = TOS; |
*sp-- = TOS; |
TOS = up+*(Cell*)PFA1(cfa); |
TOS = (Cell)(up+*(Cell*)PFA1(cfa)); |
#else |
#else |
*--sp = up+*(Cell*)PFA1(cfa); |
*--sp = (Cell)(up+*(Cell*)PFA1(cfa)); |
#endif |
#endif |
NEXT; |
NEXT; |
|
|