Diff for /gforth/vmgen-ex/mini.h between versions 1.1 and 1.12

version 1.1, 2001/04/29 11:28:24 version 1.12, 2007/12/31 19:02:25
Line 1 Line 1
 /* support functions for vmgen example  /* support functions for vmgen example
   
   Copyright (C) 2001 Free Software Foundation, Inc.    Copyright (C) 2001,2002,2003,2007 Free Software Foundation, Inc.
   
   This file is part of Gforth.    This file is part of Gforth.
   
   Gforth is free software; you can redistribute it and/or    Gforth is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License    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.    of the License, or (at your option) any later version.
   
   This program is distributed in the hope that it will be useful,    This program is distributed in the hope that it will be useful,
Line 15 Line 15
   GNU General Public License for more details.    GNU General Public License for more details.
   
   You should have received a copy of the GNU General Public License    You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software    along with this program; if not, see http://www.gnu.org/licenses/.
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.  
 */  */
   
 #include <stdio.h>  #include <stdio.h>
   
 typedef void *Label;  
 typedef void *Inst; /* for direct threading, the same as Label */  
 typedef long Cell;  typedef long Cell;
   #ifdef __GNUC__
   typedef void *Label;
   typedef Label Inst; /* we could "typedef Cell Inst", removing the need
                          for casts in a few places, but requiring a few
                          casts etc. in other places */
   #else
   typedef long Label;
   typedef long Inst;
   #endif
   
 extern Inst *vm_prim;  extern Inst *vm_prim;
 extern int locals;  extern int locals;
Line 35  extern char *program_name; Line 41  extern char *program_name;
 extern FILE *vm_out;  extern FILE *vm_out;
 extern Inst *vmcodep;  extern Inst *vmcodep;
 extern Inst *last_compiled;  extern Inst *last_compiled;
   extern Inst *vmcode_end;
   extern int use_super;
   
 /* generic vmgen support functions (e.g., wrappers) */  /* generic vmgen support functions (e.g., wrappers) */
 void gen_inst(Inst **vmcodepp, Inst i);  void gen_inst(Inst **vmcodepp, Inst i);
Line 42  void init_peeptable(void); Line 50  void init_peeptable(void);
 void vm_disassemble(Inst *ip, Inst *endp, Inst prim[]);  void vm_disassemble(Inst *ip, Inst *endp, Inst prim[]);
 void vm_count_block(Inst *ip);  void vm_count_block(Inst *ip);
 struct block_count *block_insert(Inst *ip);  struct block_count *block_insert(Inst *ip);
   void vm_print_profile(FILE *file);
   
   /* 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_Cell2target(_cell,x) ((x)=(Inst *)(_cell))
   #define vm_Cell2a(_cell,x)      ((x)=(char *)(_cell))
   #define vm_i2Cell(x,_cell)      ((_cell)=(Cell)(x))
   #define vm_target2Cell(x,_cell) ((_cell)=(Cell)(x))
   #define vm_a2Cell(x,_cell)      ((_cell)=(Cell)(x))
   #define vm_Cell2Cell(_x,_y) ((_y)=(Cell)(_x))
   /* the cast in vm_Cell2Cell is needed because the base type for
      inst-stream is Cell, but *IP is an Inst */
   
   /* for future extensions */
   #define IMM_ARG(access,value)           (access)
   
   #define VM_IS_INST(inst, n) ((inst) == vm_prim[n])
   
 /* mini type-specific support functions */  /* mini type-specific support functions */
 void genarg_i(Inst **vmcodepp, Cell i);  void genarg_i(Inst **vmcodepp, Cell i);
Line 49  void printarg_i(Cell i); Line 75  void printarg_i(Cell i);
 void genarg_target(Inst **vmcodepp, Inst *target);  void genarg_target(Inst **vmcodepp, Inst *target);
 void printarg_target(Inst *target);  void printarg_target(Inst *target);
 void printarg_a(char *a);  void printarg_a(char *a);
   void printarg_Cell(Cell i);
   
 /* engine functions (type not fixed) */  /* engine functions (type not fixed) */
 Cell engine(Inst *ip0, Cell *sp, char *fp);  Cell engine(Inst *ip0, Cell *sp, char *fp);
 Cell engine_debug(Inst *ip0, Cell *sp, char *fp);  Cell engine_debug(Inst *ip0, Cell *sp, char *fp);
   
   
 /* other generic functions */  /* other generic functions */
 int yyparse(void);  int yyparse(void);
   

Removed from v.1.1  
changed lines
  Added in v.1.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>