--- gforth/Attic/386.h 1994/05/18 17:32:59 1.2 +++ gforth/Attic/386.h 1994/10/03 18:23:54 1.6 @@ -1,5 +1,4 @@ /* - $Id: 386.h,v 1.2 1994/05/18 17:32:59 pazsan Exp $ Copyright 1992 by the ANSI figForth Development Group This is the machine-specific part for Intel 386 compatible processors @@ -26,6 +25,10 @@ typedef float SFloat; /* define this if the least-significant byte is at the largets address */ /* #define BIG_ENDIAN */ +/* define this if the processor cannot exploit instruction-level + parallelism (no pipelining or too few registers) */ +#define CISC_NEXT + #ifdef DIRECT_THREADED /* PFA gives the parameter field address corresponding to a cfa */ #define PFA(cfa) (((Cell *)cfa)+2) @@ -33,7 +36,7 @@ typedef float SFloat; #define PFA1(cfa) PFA(cfa) /* CODE_ADDRESS is the address of the code jumped to through the code field */ #define CODE_ADDRESS(cfa) \ - ({long _cfa = (char *)(cfa); (Label)(_cfa+*((long *)(_cfa+1))+5);}) + ({long _cfa = (long)(cfa); (Label)(_cfa+*((long *)(_cfa+1))+5);}) /* MAKE_CF creates an appropriate code field at the cfa; ca is the code address */ #define MAKE_CF(cfa,ca) ({long _cfa = (long)(cfa); \ long _ca = (long)(ca); \ @@ -54,7 +57,14 @@ typedef float SFloat; #define MAKE_DOES_CF(addr,doesp) MAKE_CF(addr,((int)(doesp)-8)) #endif +#ifdef FORCE_REG +#define IPREG asm("%esi") +#define SPREG asm("%edi") +#ifdef USE_TOS +#define CFAREG asm("%ecx") +#else +#define CFAREG asm("%edx") +#endif +#endif /* FORCE_REG */ + #define rint(x) floor((x)+0.5) -/* -#define CISC_NEXT -*/