}
-rvm_asmins_t rvm_asma(rword opcode, rword op1, rword op2, rword op3, rchar *data, rulong size)
+rvm_asmins_t rvm_cond_asma(rword cond, rword opcode, rword op1, rword op2, rword op3, rchar *data, rulong size)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setstrptr(&a.data, data, size);
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
a.da = 1;
}
-rvm_asmins_t rvm_asmp(rword opcode, rword op1, rword op2, rword op3, rpointer data)
+rvm_asmins_t rvm_asma(rword opcode, rword op1, rword op2, rword op3, rchar *data, rulong size)
+{
+ return rvm_cond_asma(0, opcode, op1, op2, op3, data, size);
+}
+
+
+rvm_asmins_t rvm_cond_asmp(rword cond, rword opcode, rword op1, rword op2, rword op3, rpointer data)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setpointer(&a.data, data);
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
a.da = 1;
}
-rvm_asmins_t rvm_asms(rword opcode, rword op1, rword op2, rword op3, rword data)
+rvm_asmins_t rvm_asmp(rword opcode, rword op1, rword op2, rword op3, rpointer data)
+{
+ return rvm_cond_asmp(0, opcode, op1, op2, op3, data);
+}
+
+
+rvm_asmins_t rvm_cond_asms(rword cond, rword opcode, rword op1, rword op2, rword op3, rword data)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setunsigned(&a.data, data);
RVM_REG_SETTYPE(&a.data, RVM_DTYPE_SWIID)
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
}
-rvm_asmins_t rvm_asmf(rword opcode, rword op1, rword op2, rword op3, rword data)
+rvm_asmins_t rvm_asms(rword opcode, rword op1, rword op2, rword op3, rword data)
+{
+ return rvm_cond_asms(0, opcode, op1, op2, op3, data);
+}
+
+
+rvm_asmins_t rvm_cond_asmf(rword cond, rword opcode, rword op1, rword op2, rword op3, rword data)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setunsigned(&a.data, data);
RVM_REG_SETTYPE(&a.data, RVM_DTYPE_FUNCTION)
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
return a;
}
+rvm_asmins_t rvm_asmf(rword opcode, rword op1, rword op2, rword op3, rword data)
+{
+ return rvm_cond_asmf(0, opcode, op1, op2, op3, data);
+}
-rvm_asmins_t rvm_asm(rword opcode, rword op1, rword op2, rword op3, rword data)
+
+rvm_asmins_t rvm_cond_asm(rword cond, rword opcode, rword op1, rword op2, rword op3, rword data)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setunsigned(&a.data, data);
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
a.da = 1;
}
-rvm_asmins_t rvm_asml(rword opcode, rword op1, rword op2, rword op3, rlong data)
+rvm_asmins_t rvm_asm(rword opcode, rword op1, rword op2, rword op3, rword data)
+{
+ return rvm_cond_asm(0, opcode, op1, op2, op3, data);
+}
+
+
+
+rvm_asmins_t rvm_cond_asml(rword cond, rword opcode, rword op1, rword op2, rword op3, rlong data)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setlong(&a.data, data);
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
a.da = 1;
}
-rvm_asmins_t rvm_asmb(rword opcode, rword op1, rword op2, rword op3, ruint data)
+rvm_asmins_t rvm_asml(rword opcode, rword op1, rword op2, rword op3, rlong data)
+{
+ return rvm_cond_asml(0, opcode, op1, op2, op3, data);
+}
+
+
+rvm_asmins_t rvm_cond_asmb(rword cond, rword opcode, rword op1, rword op2, rword op3, ruint data)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setboolean(&a.data, data);
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
a.da = 1;
}
-rvm_asmins_t rvm_asmd(rword opcode, rword op1, rword op2, rword op3, rdouble data)
+rvm_asmins_t rvm_asmb(rword opcode, rword op1, rword op2, rword op3, ruint data)
+{
+ return rvm_cond_asmb(0, opcode, op1, op2, op3, data);
+}
+
+
+rvm_asmins_t rvm_cond_asmd(rword cond, rword opcode, rword op1, rword op2, rword op3, rdouble data)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setdouble(&a.data, data);
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
a.da = 1;
return a;
}
+rvm_asmins_t rvm_asmd(rword opcode, rword op1, rword op2, rword op3, rdouble data)
+{
+ return rvm_cond_asmd(0, opcode, op1, op2, op3, data);
+}
-rvm_asmins_t rvm_asm2(rword opcode, rword op1, rword op2, rword op3, ruint32 p1, ruint32 p2)
+
+rvm_asmins_t rvm_cond_asm2(rword cond, rword opcode, rword op1, rword op2, rword op3, ruint32 p1, ruint32 p2)
{
rvm_asmins_t a;
a.op1 = (ruint8)op1;
a.op2 = (ruint8)op2;
a.op3 = (ruint8)op3;
+ a.cond = cond;
rvm_reg_setpair(&a.data, p1, p2);
if ((ruint8)op1 == DA || (ruint8)op2 == DA || (ruint8)op3 == DA)
a.da = 1;
}
+rvm_asmins_t rvm_asm2(rword opcode, rword op1, rword op2, rword op3, ruint32 p1, ruint32 p2)
+{
+ return rvm_cond_asm2(0, opcode, op1, op2, op3, p1, p2);
+}
+
rvmreg_t *rvm_cpu_alloc_global(rvmcpu_t *cpu)
{
rvmreg_t *global;
rvm_asmins_t rvm_asms(rword opcode, rword op1, rword op2, rword op3, rword data);
rvm_asmins_t rvm_asmf(rword opcode, rword op1, rword op2, rword op3, rword data);
rvm_asmins_t rvm_asm2(rword opcode, rword op1, rword op2, rword op3, ruint32 p1, ruint32 p2);
+
+rvm_asmins_t rvm_cond_asm(rword cond, rword opcode, rword op1, rword op2, rword op3, rword data);
+rvm_asmins_t rvm_cond_asma(rword cond, rword opcode, rword op1, rword op2, rword op3, rchar *data, rulong size);
+rvm_asmins_t rvm_cond_asml(rword cond, rword opcode, rword op1, rword op2, rword op3, rlong data);
+rvm_asmins_t rvm_cond_asmb(rword cond, rword opcode, rword op1, rword op2, rword op3, ruint data);
+rvm_asmins_t rvm_cond_asmp(rword cond, rword opcode, rword op1, rword op2, rword op3, rpointer data);
+rvm_asmins_t rvm_cond_asms(rword cond, rword opcode, rword op1, rword op2, rword op3, rword data);
+rvm_asmins_t rvm_cond_asmd(rword cond, rword opcode, rword op1, rword op2, rword op3, rdouble data);
+rvm_asmins_t rvm_cond_asmf(rword cond, rword opcode, rword op1, rword op2, rword op3, rword data);
+rvm_asmins_t rvm_cond_asm2(rword cond, rword opcode, rword op1, rword op2, rword op3, ruint32 p1, ruint32 p2);
+
+
void rvm_asm_dump(rvm_asmins_t *pi, ruint count);