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

version 1.1, 2001/04/29 11:28:24 version 1.8, 2002/12/27 15:51:28
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.8


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