case RC_ADDR:
stream.writeMOV_Const(getReg(0), getInt(1));
break;
case RE_ADDR:
GPR r = getReg(0);
Address ind = getAddress(1);
stream.writeMOV(r.getSize(), r, getRegister(ind.getImg()), ind.disp);
break;
case RA_ADDR:
stream.writeMOV(getReg(0), getAddress(1).disp);
break;
case RG_ADDR:
ind = getAddress(1);
stream.writeMOV(getReg(0), (SR) X86Register.getRegister(ind.getImg()), ind.disp);
break;
case ER_ADDR:
ind = getAddress(0);
int oSize = operandSize;
if (oSize > getReg(1).getSize()) {
oSize = getReg(1).getSize();
}
stream.writeMOV(oSize, getRegister(ind.getImg()), ind.disp, getReg(1));
break;
case EC_ADDR:
ind = getAddress(0);
stream.writeMOV_Const(operandSize, getRegister(ind.getImg()), ind.disp, getInt(1));
break;
case AR_ADDR:
stream.writeMOV(getAddress(0).disp, getReg(1));
break;
case AC_ADDR:
stream.writeMOV_Const(operandSize, getAddress(0).disp, getInt(1));
break;
case SR_ADDR:
ind = getAddress(0);
stream.writeMOV(operandSize, getRegister(ind.getImg()), getRegister(ind.sreg),
ind.scale, ind.disp, getReg(1));
break;
case GR_ADDR:
ind = getAddress(0);
stream.writeMOV((SR) X86Register.getRegister(ind.getImg()), ind.disp, getReg(1));
break;
case GC_ADDR:
ind = getAddress(0);
stream.writeMOV_Const(operandSize, (SR) X86Register.getRegister(ind.getImg()), ind.disp, getInt(1));
break;
default:
reportAddressingError(MOV_ISN, addr);
}
}