--- gforth/vmgen-ex2/mini.h 2002/06/02 15:46:17 1.1 +++ gforth/vmgen-ex2/mini.h 2007/12/31 18:40:26 1.8 @@ -1,12 +1,12 @@ /* support functions for vmgen example - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001,2002,2003 Free Software Foundation, Inc. This file is part of Gforth. Gforth is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 + as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -15,27 +15,17 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + along with this program; if not, see http://www.gnu.org/licenses/. */ #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 +39,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 +57,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);