eRegPushBase4,
eReg2Reg,
eReg2RegOther,
+ eReg2RegOther2,
eReg2RegAddr,
eReg2RegDeref,
eStructMember,
#define RegPushBase4 (f_instr)eRegPushBase4
#define Reg2Reg (f_instr)eReg2Reg
#define Reg2RegOther (f_instr)eReg2RegOther
+#define Reg2RegOther2 (f_instr)eReg2RegOther2
#define Reg2RegAddr (f_instr)eReg2RegAddr
#define Reg2RegDeref (f_instr)eReg2RegDeref
#define StructMember (f_instr)eStructMember
gw_out(" {-M}%-14"UINT_F"{0}", instr->m_val2);
gw_out("\n");
break;
+ case eReg2RegOther2:
+ gw_out("{Y}┃{0}{-}% 4lu{0}: Reg2RegOther2", j);
+ gw_out(" {-R}%-14"UINT_F"{0}", instr->m_val);
+ gw_out(" {-M}%-14"UINT_F"{0}", instr->m_val2);
+ gw_out("\n");
+ break;
case eReg2RegAddr:
gw_out("{Y}┃{0}{-}% 4lu{0}: Reg2RegAddr ", j);
gw_out(" {-R}%-14"UINT_F"{0}", instr->m_val);
instr->m_val2 = -SZ_INT - val->size;
regpush(emit, SZ_INT);
} else {
- const Instr instr = emit_add_instr(emit, Reg2RegOther);
+ const Instr instr = emit_add_instr(emit, Reg2RegOther2);
instr->m_val = -key->size;
instr->m_val2 = key->size;
regpush(emit, key->size);
&®setimm, &®pushimm, &®pushfloat, &®pushother, &®pushaddr,
&®pushmem, &®pushmemfloat, &®pushmemother, &®pushmemaddr,
&®pushmemderef, &&pushnow, &&baseint, &&basefloat, &&baseother,
- &&baseaddr, &®toreg, &®toregother, &®toregaddr, &®toregderef,
+ &&baseaddr, &®toreg, &®toregother, &®toregother2, &®toregaddr, &®toregderef,
&&structmember, &&structmemberfloat, &&structmemberother,
&&structmemberaddr, &&memsetimm, &&memaddimm, &&repeatidx, &&repeat,
&®pushme, &®pushmaybe, &&funcreturn, &&_goto, &&allocint,
regtoregother:
memcpy(*(m_bit **)(reg - SZ_INT), reg + IVAL, VAL2);
DISPATCH()
+ regtoregother2:
+ memcpy(reg - VAL2, reg + IVAL, VAL2);
+ DISPATCH()
regtoregaddr:
*(m_uint **)(reg + IVAL) = &*(m_uint *)(reg + IVAL2);
DISPATCH()