version 1.75, 2004/12/31 13:24:03
|
version 1.77, 2005/01/22 22:16:59
|
Line 228 extern int gforth_memcmp(const char * s1
|
Line 228 extern int gforth_memcmp(const char * s1
|
/* normal engine */ |
/* normal engine */ |
#define VARIANT(v) (v) |
#define VARIANT(v) (v) |
#define JUMP(target) goto I_noop |
#define JUMP(target) goto I_noop |
#define LABEL(name) J_##name: asm(""); I_##name: |
#define LABEL(name) I_##name: |
|
|
#elif ENGINE==2 |
#elif ENGINE==2 |
/* variant with padding between VM instructions for finding out |
/* variant with padding between VM instructions for finding out |
Line 236 extern int gforth_memcmp(const char * s1
|
Line 236 extern int gforth_memcmp(const char * s1
|
#define engine engine2 |
#define engine engine2 |
#define VARIANT(v) (v) |
#define VARIANT(v) (v) |
#define JUMP(target) goto I_noop |
#define JUMP(target) goto I_noop |
#define LABEL(name) J_##name: SKIP16; I_##name: |
#define LABEL(name) SKIP16; I_##name: |
#define IN_ENGINE2 |
#define IN_ENGINE2 |
|
|
#elif ENGINE==3 |
#elif ENGINE==3 |
Line 245 extern int gforth_memcmp(const char * s1
|
Line 245 extern int gforth_memcmp(const char * s1
|
#define engine engine3 |
#define engine 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) J_##name: asm(""); I_##name: |
#define LABEL(name) I_##name: |
#else |
#else |
#error illegal ENGINE value |
#error illegal ENGINE value |
#endif /* ENGINE */ |
#endif /* ENGINE */ |
|
|
/* 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(""); |
|
#define LABEL3(name) J_##name: asm(""); |
|
|
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 |
Line 268 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
Line 269 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
register Float *fp FPREG = fp0; |
register Float *fp FPREG = fp0; |
register Address lp LPREG = lp0; |
register Address lp LPREG = lp0; |
register Xt cfa CFAREG; |
register Xt cfa CFAREG; |
|
register Label real_ca; |
#ifdef MORE_VARS |
#ifdef MORE_VARS |
MORE_VARS |
MORE_VARS |
#endif |
#endif |
Line 303 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
Line 305 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
#define INST_ADDR(name) ((Label)&&J_##name) |
#define INST_ADDR(name) ((Label)&&J_##name) |
#include PRIM_LAB_I |
#include PRIM_LAB_I |
#undef INST_ADDR |
#undef INST_ADDR |
(Label)&&after_last |
(Label)&&after_last, |
|
(Label)&&before_goto, |
|
(Label)&&after_goto |
}; |
}; |
#ifdef CPU_DEP2 |
#ifdef CPU_DEP2 |
CPU_DEP2 |
CPU_DEP2 |
Line 354 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
Line 358 Label *engine(Xt *ip0, Cell *sp0, Cell *
|
CPU_DEP3 |
CPU_DEP3 |
#endif |
#endif |
|
|
|
before_goto: |
|
goto *real_ca; |
|
after_goto: |
|
|
#include PRIM_I |
#include PRIM_I |
after_last: return (Label *)0; |
after_last: return (Label *)0; |
/*needed only to get the length of the last primitive */ |
/*needed only to get the length of the last primitive */ |