--- gforth/vmgen-ex2/mini.h 2002/06/02 15:46:17 1.1 +++ gforth/vmgen-ex2/mini.h 2002/12/27 15:51:28 1.5 @@ -21,21 +21,12 @@ #include +#ifdef __GNUC__ typedef void *Label; - -#ifdef USE_CASTS -typedef long Cell; -Typedef Cell Inst; - -/* type change macros; these are specific to the types you use, so you - have to change this part */ -#define vm_Cell2i(_cell,x) ((x)=(long)(_cell)) -#define vm_i2Cell(_cell,x) ((x)=(Cell)(_cell)) -#define vm_Cell2target(_cell,x) ((x)=(Inst *)(_cell)) -#define vm_target2Cell(_cell,x) ((x)=(Cell)(_cell)) -#define vm_Cell2a(_cell,x) ((x)=(char *)(_cell)) -#define vm_a2Cell(_cell,x) ((x)=(Cell)(_cell)) #else +typedef long Label; +#endif + typedef union Cell { long i; union Cell *target; @@ -49,7 +40,10 @@ typedef union Cell { #define vm_target2Cell(_x,_cell) ((_cell).target=(_x)) #define vm_Cell2a(_cell,_x) ((_x)=(_cell).a) #define vm_a2Cell(_x,_cell) ((_cell).a=(_x)) -#endif +#define vm_Cell2Cell(_x,_y) ((_y)=(_x)) + +/* for future extensions */ +#define IMM_ARG(access,value) (access) #define VM_IS_INST(_inst, n) ((_inst).inst == vm_prim[n]) @@ -64,6 +58,7 @@ extern FILE *vm_out; extern Inst *vmcodep; extern Inst *last_compiled; extern Inst *vmcode_end; +extern int use_super; /* generic vmgen support functions (e.g., wrappers) */ void gen_inst(Inst **vmcodepp, Label i);