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;
    private final void emmitMOV() {        int addr = getAddressingMode(2);        switch (addr) {            case RR_ADDR:                X86Register r1 = X86Register.getRegister(((Register) args[0]).name);                X86Register r2 = X86Register.getRegister(((Register) args[1]).name);                if (r1 instanceof GPR && r2 instanceof GPR) {                    stream.writeMOV(operandSize, (GPR) r1, (GPR) r2);                } else if (r1 instanceof CRX && r2 instanceof GPR) {                    stream.writeMOV((CRX) r1, (GPR) r2);                } else if (r1 instanceof GPR && r2 instanceof CRX) {                    stream.writeMOV((GPR) r1, (CRX) r2);                } else if (r1 instanceof SR && r2 instanceof GPR) {                    stream.writeMOV((SR) r1, (GPR) r2);                } else if (r1 instanceof GPR && r2 instanceof SR) {                    stream.writeMOV((GPR) r1, (SR) r2);                } else {                    throw new IllegalArgumentException("Invalid register usage: mov " + r1 + "," + r2);                }                break;            case RC_ADDR:                stream.writeMOV_Const(getReg(0), getInt(1));                break;            case RE_ADDR:                Address ind = getAddress(1);                stream.writeMOV(operandSize, getReg(0), getRegister(ind.getImg()), ind.disp);                break;            case ER_ADDR:                ind = getAddress(0);                stream.writeMOV(operandSize, 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;            default:                reportAddressingError(MOV_ISN, addr);        }    }