os.writeAND(X86Register.ECX, 63); os.writeCMP_Const(X86Register.ECX, 32);
os.writeAND(ECX, 63); os.writeCMP_Const(ECX, 32);
	public final void visit_lshr() {		final IntItem cnt = vstack.popInt();		final LongItem val = vstack.popLong();//		final X86RegisterPool pool = eContext.getGPRPool();		// Get cnt into ECX		if (!cnt.uses(X86Register.ECX)) {			val.spillIfUsing(eContext, X86Register.ECX);			L1AHelper.requestRegister(eContext, X86Register.ECX, cnt);			cnt.loadTo(eContext, X86Register.ECX);		}		// Load val		val.load(eContext);		if (os.isCode32()) {			final X86Register.GPR lsb = val.getLsbRegister(eContext);			final X86Register.GPR msb = val.getMsbRegister(eContext);            final Label curInstrLabel = getCurInstrLabel();			// Calculate			os.writeAND(X86Register.ECX, 63);			os.writeCMP_Const(X86Register.ECX, 32);			final Label gt32Label = new Label(curInstrLabel + "gt32");			final Label endLabel = new Label(curInstrLabel + "end");			os.writeJCC(gt32Label, X86Constants.JAE); // JAE			/** ECX < 32 */			os.writeSHRD_CL(lsb, msb);			os.writeSAR_CL(msb);			os.writeJMP(endLabel);			/** ECX >= 32 */			os.setObjectRef(gt32Label);			os.writeMOV(INTSIZE, lsb, msb);			os.writeSAR(msb, 31);			os.writeSAR_CL(lsb);			os.setObjectRef(endLabel);		} else {			final GPR64 valr = val.getRegister(eContext);			os.writeSAR_CL(valr);		}		vstack.push(val);		// Release		cnt.release(eContext);	}