version 1.89, 2006/03/11 22:22:40
|
version 1.91, 2006/10/21 22:13:49
|
Line 97 extern int gforth_memcmp(const char * s1
|
Line 97 extern int gforth_memcmp(const char * s1
|
#endif |
#endif |
|
|
#define NEWLINE '\n' |
#define NEWLINE '\n' |
|
#define CELL_MIN (((Cell)1)<<(sizeof(Cell)*CHAR_BIT-1)) |
|
#define CHECK_DIVISION 1 |
|
|
/* conversion on fetch */ |
/* conversion on fetch */ |
|
|
Line 256 extern int gforth_memcmp(const char * s1
|
Line 258 extern int gforth_memcmp(const char * s1
|
#elif ENGINE==2 |
#elif ENGINE==2 |
/* variant with padding between VM instructions for finding out |
/* variant with padding between VM instructions for finding out |
cross-inst jumps (for dynamic code) */ |
cross-inst jumps (for dynamic code) */ |
#define engine engine2 |
#define gforth_engine gforth_engine2 |
#define VARIANT(v) (v) |
#define VARIANT(v) (v) |
#define JUMP(target) goto I_noop |
#define JUMP(target) goto I_noop |
#define LABEL(name) H_##name: SKIP16; I_##name: |
#define LABEL(name) H_##name: SKIP16; I_##name: |
Line 264 extern int gforth_memcmp(const char * s1
|
Line 266 extern int gforth_memcmp(const char * s1
|
#elif ENGINE==3 |
#elif ENGINE==3 |
/* variant with different immediate arguments for finding out |
/* variant with different immediate arguments for finding out |
immediate arguments (for native code) */ |
immediate arguments (for native code) */ |
#define engine engine3 |
#define gforth_engine gforth_engine3 |
#define VARIANT(v) ((v)^0xffffffff) |
#define VARIANT(v) ((v)^0xffffffff) |
#define JUMP(target) goto K_lit |
#define JUMP(target) goto K_lit |
#define LABEL(name) H_##name: asm(""); I_##name: |
#define LABEL(name) H_##name: asm(""); I_##name: |
Line 276 extern int gforth_memcmp(const char * s1
|
Line 278 extern int gforth_memcmp(const char * s1
|
#define LABEL2(name) K_##name: asm(""); |
#define LABEL2(name) K_##name: asm(""); |
#define LABEL3(name) J_##name: asm(""); |
#define LABEL3(name) J_##name: asm(""); |
|
|
Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0) |
Label *gforth_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 |
*/ |
*/ |
Line 297 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
Line 299 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
#endif |
#endif |
#ifdef HAS_FFCALL |
#ifdef HAS_FFCALL |
av_alist alist; |
av_alist alist; |
extern va_alist clist; |
extern va_alist gforth_clist; |
float frv; |
float frv; |
int irv; |
int irv; |
double drv; |
double drv; |
Line 305 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
Line 307 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
void * prv; |
void * prv; |
#endif |
#endif |
#ifdef HAS_LIBFFI |
#ifdef HAS_LIBFFI |
extern void * ritem; |
extern void * gforth_ritem; |
extern void ** clist; |
extern void ** gforth_clist; |
extern void ffi_callback(ffi_cif * cif, void * resp, void ** args, Xt * ip); |
extern void ffi_callback(ffi_cif * cif, void * resp, void ** args, Xt * ip); |
#endif |
#endif |
register Address up UPREG = gforth_UP; |
register Address up UPREG = gforth_UP; |