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

version 1.1, 2001/04/29 11:28:24 version 1.10, 2003/08/25 14:17:55
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 Free Software Foundation, Inc.
   
   This file is part of Gforth.    This file is part of Gforth.
   
Line 21 Line 21
   
 #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 42  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 51  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 76  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.10


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