typedef rint rboolean;
typedef void *rpointer;
typedef const void *rconstpointer;
-typedef struct {ruint32 p1; ruint32 p2;} rpair;
+typedef struct {ruint32 p1; ruint32 p2;} rpair_t;
/*
* Atomic operations (Architecture Dependent)
union {
ruint64 u;
rdouble d;
- rpair p;
+ rpair_t p;
} data;
ruint16 op1:RVM_OPERAND_BITS;
ruint16 op2:RVM_OPERAND_BITS;
int rvm_cpu_setreg(rvmcpu_t *cpu, rword regnum, const rvmreg_t *src);
rvmreg_t * rvm_cpu_getreg(rvmcpu_t *cpu, rword regnum);
rvm_asmins_t rvm_asm(rword opcode, rword op1, rword op2, rword op3, rword data);
+rvm_asmins_t rvm_asma(rword opcode, rword op1, rword op2, rword op3, rchar *data, rulong size);
rvm_asmins_t rvm_asml(rword opcode, rword op1, rword op2, rword op3, rlong data);
rvm_asmins_t rvm_asmb(rword opcode, rword op1, rword op2, rword op3, rword data);
rvm_asmins_t rvm_asmd(rword opcode, rword op1, rword op2, rword op3, rdouble data);
#define RVM_DTYPE_BOOLEAN 3
#define RVM_DTYPE_DOUBLE 4
#define RVM_DTYPE_PAIR 5
-#define RVM_DTYPE_STRING 6
-#define RVM_DTYPE_ARRAY 7
-#define RVM_DTYPE_HARRAY 8
-#define RVM_DTYPE_NAN 9
-#define RVM_DTYPE_UNDEF 10
-#define RVM_DTYPE_JSOBJECT 11
-#define RVM_DTYPE_FUNCTION 12
-#define RVM_DTYPE_SWIID 13 /* SWI ID */
-#define RVM_DTYPE_RELOCPTR 14 /* Relocation, using pointers */
-#define RVM_DTYPE_RELOCINDEX 15 /* Relocation, using offsets */
+#define RVM_DTYPE_UNDEF 6
+#define RVM_DTYPE_STRPTR 7
+#define RVM_DTYPE_STRING 8
+#define RVM_DTYPE_ARRAY 9
+#define RVM_DTYPE_HARRAY 10
+#define RVM_DTYPE_NAN 11
+#define RVM_DTYPE_JSOBJECT 12
+#define RVM_DTYPE_FUNCTION 13
+#define RVM_DTYPE_SWIID 14
#define RVM_DTYPE_USER 16
#define RVM_DTYPE_SIZE (1 << 5)
#define RVM_DTYPE_MASK (RVM_DTYPE_SIZE - 1)
typedef struct rvmreg_s {
union {
ruint64 u64;
- rpair pair;
rword w;
rlong l;
rpointer p;
rdouble d;
+ rchar *s;
+ rpair_t pair;
ruint8 c[RVM_MIN_REGSIZE];
} v;
+ ruint32 size;
rvmreg_type_t type;
rvmreg_flags_t flags;
- ruint32 size;
} rvmreg_t;
/* Create array with rvmreg elements */
{
rpastat_t *stat = (rpastat_t *)cpu->userdata1;
rlong tp = RVM_CPUREG_GETL(cpu, TP);
- rpair op1 = RVM_CPUREG_GETPAIR(cpu, ins->op1);
+ rpair_t op1 = RVM_CPUREG_GETPAIR(cpu, ins->op1);
RVM_STATUS_UPDATE(cpu, RVM_STATUS_Z, (!(cpu->status & RVM_STATUS_V) && stat->instack[tp].wc >= op1.p1 && stat->instack[tp].wc <= op1.p2) ? 1 : 0);
}