version 1.1, 2002/06/02 15:46:17
|
version 1.2, 2002/06/02 17:02:56
|
Line 21
|
Line 21
|
|
|
#include <stdio.h> |
#include <stdio.h> |
|
|
|
#ifdef __GNUC__ |
typedef void *Label; |
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 |
#else |
|
typedef long Label; |
|
#endif |
|
|
typedef union Cell { |
typedef union Cell { |
long i; |
long i; |
union Cell *target; |
union Cell *target; |
Line 49 typedef union Cell {
|
Line 40 typedef union Cell {
|
#define vm_target2Cell(_x,_cell) ((_cell).target=(_x)) |
#define vm_target2Cell(_x,_cell) ((_cell).target=(_x)) |
#define vm_Cell2a(_cell,_x) ((_x)=(_cell).a) |
#define vm_Cell2a(_cell,_x) ((_x)=(_cell).a) |
#define vm_a2Cell(_x,_cell) ((_cell).a=(_x)) |
#define vm_a2Cell(_x,_cell) ((_cell).a=(_x)) |
#endif |
|
|
|
#define VM_IS_INST(_inst, n) ((_inst).inst == vm_prim[n]) |
#define VM_IS_INST(_inst, n) ((_inst).inst == vm_prim[n]) |
|
|