Diff for /gforth/vmgen-ex/mini.h between versions 1.3 and 1.9

version 1.3, 2002/06/02 15:46:17 version 1.9, 2003/03/09 15:17:09
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 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 36  extern FILE *vm_out; Line 43  extern FILE *vm_out;
 extern Inst *vmcodep;  extern Inst *vmcodep;
 extern Inst *last_compiled;  extern Inst *last_compiled;
 extern Inst *vmcode_end;  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 44  void vm_disassemble(Inst *ip, Inst *endp Line 52  void vm_disassemble(Inst *ip, Inst *endp
 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);  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])  #define VM_IS_INST(inst, n) ((inst) == vm_prim[n])
   
 /* mini type-specific support functions */  /* mini type-specific support functions */

Removed from v.1.3  
changed lines
  Added in v.1.9


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