textx86stream.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 1,306 行 · 第 1/3 页

JAVA
1,306
字号
	}

	/**
	 * Create a CMP reg1, [reg2+disp]
	 * 
	 * @param reg1
	 * @param reg2
	 * @param disp
	 */
	public void writeCMP(Register reg1, Register reg2, int disp) {

		println("\tcmp " + reg1 + ",[" + reg2 + disp(disp) + "]");
	}

	/**
	 * Create a CMP [reg1+disp], reg2
	 * 
	 * @param reg1
	 * @param disp
	 * @param reg2
	 */
	public void writeCMP(Register reg1, int disp, Register reg2) {

		println("\tcmp [" + reg1 + disp(disp) + "]," + reg2);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeCMPXCHG_EAX(Register, int, Register, boolean)
	 */
	public void writeCMPXCHG_EAX(Register dstReg, int dstDisp, Register srcReg, boolean lock) {

		println("\tcmpxchg [" + dstReg + disp(dstDisp) + "]," + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeDEC(Register, int)
	 */
	public void writeDEC(Register dstReg, int dstDisp) {

		println("\tdec dword [" + dstReg + disp(dstDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeDEC(org.jnode.assembler.x86.Register)
	 */
	public void writeDEC(Register dstReg) {

		println("\tdec " + dstReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFADD32(Register, int)
	 */
	public void writeFADD32(Register srcReg, int srcDisp) {

		println("\tfadd dword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFADD64(Register, int)
	 */
	public void writeFADD64(Register srcReg, int srcDisp) {

		println("\tfadd qword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFCHS()
	 */
	public void writeFCHS() {

		println("\tfchs");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFDIV32(Register, int)
	 */
	public void writeFDIV32(Register srcReg, int srcDisp) {

		println("\tfdiv dword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFDIV64(Register, int)
	 */
	public void writeFDIV64(Register srcReg, int srcDisp) {

		println("\tfdiv qword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFFREE(org.jnode.assembler.x86.Register)
	 */
	public void writeFFREE(Register fReg) {

		println("\tffree " + fReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFILD32(Register, int)
	 */
	public void writeFILD32(Register dstReg, int dstDisp) {

		println("\tfild dword [" + dstReg + disp(dstDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFILD64(Register, int)
	 */
	public void writeFILD64(Register dstReg, int dstDisp) {
		println("\tfild qword [" + dstReg + disp(dstDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFISTP32(Register, int)
	 */
	public void writeFISTP32(Register dstReg, int dstDisp) {

		println("\tfistp dword [" + dstReg + disp(dstDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFISTP64(Register, int)
	 */
	public void writeFISTP64(Register dstReg, int dstDisp) {

		println("\tfistp qword [" + dstReg + disp(dstDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFLD32(Register, int)
	 */
	public void writeFLD32(Register srcReg, int srcDisp) {

		println("\tfld dword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFLD64(Register, int)
	 */
	public void writeFLD64(Register srcReg, int srcDisp) {

		println("\tfld qword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFMUL32(Register, int)
	 */
	public void writeFMUL32(Register srcReg, int srcDisp) {

		println("\tfmul dword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFMUL64(Register, int)
	 */
	public void writeFMUL64(Register srcReg, int srcDisp) {

		println("\tfmul qword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFNSTSW_AX()
	 */
	public void writeFNSTSW_AX() {

		println("\tfnstsw_ax");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFPREM()
	 */
	public void writeFPREM() {

		println("\tfprem");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFSTP32(Register, int)
	 */
	public void writeFSTP32(Register dstReg, int dstDisp) {

		println("\tfstp dword [" + dstReg + disp(dstDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFSTP64(Register, int)
	 */
	public void writeFSTP64(Register dstReg, int dstDisp) {

		println("\tfstp qword [" + dstReg + disp(dstDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFSUB32(Register, int)
	 */
	public void writeFSUB32(Register srcReg, int srcDisp) {

		println("\tfsub dword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFSUB64(Register, int)
	 */
	public void writeFSUB64(Register srcReg, int srcDisp) {

		println("\tfsub qword [" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeFUCOMPP()
	 */
	public void writeFUCOMPP() {

		println("\tfucompp");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeIDIV_EAX(Register)
	 */
	public void writeIDIV_EAX(Register srcReg) {

		println("\tidiv " + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeIMUL_EAX(Register)
	 */
	public void writeIMUL_EAX(Register srcReg) {

		println("\timul " + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeINC(Register)
	 */
	public void writeINC(Register dstReg) {

		println("\tinc " + dstReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeINT(int)
	 */
	public void writeINT(int vector) {

		println("\tint 0x" + NumberUtils.hex(vector, 2));
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeJCC(Label, int)
	 */
	public void writeJCC(Label label, int jumpOpcode) {

		println("\tj" + ccName(jumpOpcode) + " " + label);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeJMP(Label)
	 */
	public void writeJMP(Label label) {

		println("\tjmp " + label);
	}

	/**
	 * Create a absolute jump to address stored at the given offset in the given table pointer.
	 * 
	 * @param tablePtr
	 * @param offset
	 * @param rawAddress
	 *            If true, tablePtr is a raw address
	 */
	public void writeJMP(Object tablePtr, int offset, boolean rawAddress) {

		println("\tjmp dword [" + tablePtr + disp(offset) + "]");
	}

	/**
	 * Create a absolute jump to address stored at the given offset (in register) 
	 * in the given table pointer.
	 * @param tablePtr
	 * @param offsetReg
	 */
	public void writeJMP(Object tablePtr, Register offsetReg) {
		println("\tjmp dword [" + tablePtr + "+" + offsetReg + "]");	    
	}
	
	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeJMP(Register)
	 */
	public void writeJMP(Register reg32) {

		println("\tjmp " + reg32);
	}

	/**
	 * Create a absolute jump to [reg32+disp]
	 * @param reg32
	 */
	public final void writeJMP(Register reg32, int disp) {
		println("\tjmp [" + reg32 + disp(disp) + "]");
	}
	
	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeLEA(Register, Register, int)
	 */
	public void writeLEA(Register dstReg, Register srcReg, int disp) {

		println("\tlea " + dstReg + ",[" + srcReg + disp(disp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeLEA(Register, Register, Register, int, int)
	 */
	public void writeLEA(Register dstReg, Register srcReg, Register srcIdxReg, int scale, int disp) {

		println("\tlea " + dstReg + ",[" + srcReg + disp(disp) + "+" + srcIdxReg + "*" + scale + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeLODSD()
	 */
	public void writeLODSD() {

		println("\tlodsd");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeLOOP(Label)
	 */
	public void writeLOOP(Label label) throws UnresolvedObjectRefException {

		println("\tloop " + label);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOV_Const(Register, int)
	 */
	public void writeMOV_Const(Register dstReg, int imm32) {

		println("\tmov " + dstReg + ",0x" + NumberUtils.hex(imm32));
	}

	/**
	 * Create a mov [destReg+destDisp], <imm32>
	 * 
	 * @param dstReg
	 * @param dstDisp
	 * @param imm32
	 */
	public void writeMOV_Const(Register dstReg, int dstDisp, int imm32) {

		println("\tmov dword [" + dstReg + disp(dstDisp) + "],0x" + NumberUtils.hex(imm32));
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOV_Const(Register, java.lang.Object)
	 */
	public void writeMOV_Const(Register dstReg, Object label) {

		println("\tmov " + dstReg + "," + label);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOV(int, Register, int, Register)
	 */
	public void writeMOV(int operandSize, Register dstReg, int dstDisp, Register srcReg) {

		println("\tmov " + operandSize(operandSize) + "[" + dstReg + disp(dstDisp) + "]," + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOV(int, Register, Register, int, int, Register)
	 */
	public void writeMOV(int operandSize, Register dstReg, Register dstIdxReg, int scale, int dstDisp, Register srcReg) {

		println("\tmov " + operandSize(operandSize) + "[" + dstReg + disp(dstDisp) + "+" + dstIdxReg + "*" + scale + "]," + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOV(int, Register, Register, int)
	 */
	public void writeMOV(int operandSize, Register dstReg, Register srcReg, int srcDisp) {

		println("\tmov " + dstReg + "," + operandSize(operandSize) + "[" + srcReg + disp(srcDisp) + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOV(int, Register, Register, Register, int, int)
	 */
	public void writeMOV(int operandSize, Register dstReg, Register srcReg, Register srcIdxReg, int scale, int srcDisp) {

		println("\tmov " + dstReg + "," + operandSize(operandSize) + "[" + srcReg + disp(srcDisp) + "+" + srcIdxReg + "*" + scale + "]");
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOV(int, Register, Register)
	 */
	public void writeMOV(int operandSize, Register dstReg, Register srcReg) {

		println("\tmov " + dstReg + "," + operandSize(operandSize) + " " + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOVSX(Register, Register, int)
	 */
	public void writeMOVSX(Register dstReg, Register srcReg, int srcSize) {

		println("\tmovsx " + dstReg + "," + operandSize(srcSize) + " " + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMOVZX(Register, Register, int)
	 */
	public void writeMOVZX(Register dstReg, Register srcReg, int srcSize) {

		println("\tmovzx " + dstReg + "," + operandSize(srcSize) + " " + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeMUL_EAX(Register)
	 */
	public void writeMUL_EAX(Register srcReg) {

		println("\tmul " + srcReg);
	}

	/**
	 * @see org.jnode.assembler.x86.AbstractX86Stream#writeNEG(Register, int)
	 */
	public void writeNEG(Register dstReg, int dstDisp) {

		println("\tneg dword [" + dstReg + disp(dstDisp) + "]");
	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?