version 1.118, 2012/03/23 20:49:44
|
version 1.121, 2012/12/31 15:25:19
|
Line 1
|
Line 1
|
/* Gforth virtual machine (aka inner interpreter) |
/* Gforth virtual machine (aka inner interpreter) |
|
|
Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008,2010,2011 Free Software Foundation, Inc. |
Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008,2010,2011,2012 Free Software Foundation, Inc. |
|
|
This file is part of Gforth. |
This file is part of Gforth. |
|
|
Line 208 extern Char *gforth_memcpy(Char * dest,
|
Line 208 extern Char *gforth_memcpy(Char * dest,
|
#ifndef FTOSREG |
#ifndef FTOSREG |
#define FTOSREG |
#define FTOSREG |
#endif |
#endif |
|
#ifndef OPREG |
|
#define OPREG |
|
#endif |
|
|
#ifndef CPU_DEP1 |
#ifndef CPU_DEP1 |
# define CPU_DEP1 0 |
# define CPU_DEP1 0 |
Line 317 void throw(int code)
|
Line 320 void throw(int code)
|
/* the asm(""); is there to get a stop compiled on Itanium */ |
/* the asm(""); is there to get a stop compiled on Itanium */ |
#define LABEL2(name) K_##name: asm(""); |
#define LABEL2(name) K_##name: asm(""); |
|
|
Label *gforth_engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0 sr_proto) |
Label *gforth_engine(Xt *ip0 sr_proto) |
/* 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 |
*/ |
*/ |
Line 332 Label *gforth_engine(Xt *ip0, Cell *sp0,
|
Line 335 Label *gforth_engine(Xt *ip0, Cell *sp0,
|
#ifndef NO_IP |
#ifndef NO_IP |
register Xt *ip IPREG = ip0; |
register Xt *ip IPREG = ip0; |
#endif |
#endif |
register Cell *sp SPREG = sp0; |
register Cell *sp SPREG = gforth_SP; |
register Float *fp FPREG = fp0; |
register Float *fp FPREG = gforth_FP; |
register Address lp LPREG = lp0; |
register Address lp LPREG = gforth_LP; |
register Xt cfa CFAREG; |
register Xt cfa CFAREG; |
register Label real_ca CAREG; |
register Label real_ca CAREG; |
|
#ifdef HAS_OBJECTS |
|
register Char * op OPREG = NULL; |
|
#endif |
#ifdef MORE_VARS |
#ifdef MORE_VARS |
MORE_VARS |
MORE_VARS |
#endif |
#endif |
Line 396 Label *gforth_engine(Xt *ip0, Cell *sp0,
|
Line 402 Label *gforth_engine(Xt *ip0, Cell *sp0,
|
CPU_DEP2 |
CPU_DEP2 |
#endif |
#endif |
|
|
rp = rp0; |
rp = gforth_RP; |
#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)ip0,(unsigned)sp,(unsigned)rp, |
(unsigned)ip0,(unsigned)sp,(unsigned)rp, |