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 + -
显示快捷键?