joeq.Assembler.x86
Class x86Assembler

java.lang.Object
  extended by joeq.Assembler.x86.x86Assembler
All Implemented Interfaces:
x86Constants

public class x86Assembler
extends Object
implements x86Constants

x86Assembler

Version:
$Id: x86Assembler.java,v 1.18 2004/09/30 03:37:06 joewhaley Exp $
Author:
John Whaley

Field Summary
static boolean TRACE
           
 
Fields inherited from interface joeq.Assembler.x86.x86Constants
AL, AX, BOUNDS_EX_NUM, CACHE_LINE_SIZE, CJUMP_NEAR, CJUMP_SHORT, COMPLEX, EAX, EBP, EBX, ECX, EDI, EDX, ESI, ESP, JUMP_NEAR, JUMP_SHORT, MOD_DISP32, MOD_DISP8, MOD_EA, MOD_REG, NP, PU, PV, RA, RM_SIB, SCALE_1, SCALE_2, SCALE_4, SCALE_8, SEIMM8, SHIFT_ONCE, UV
 
Constructor Summary
x86Assembler(int num_targets, int est_size, int offset, int alignment)
           
 
Method Summary
 boolean containsTarget(Object target)
           
 void emit1_Imm16(x86 x, char imm)
           
 void emit1_Imm32(x86 x, int imm)
           
 void emit1_Imm8(x86 x, byte imm)
           
 void emit1(x86 x)
           
 void emit2_FPReg(x86 x, int r)
           
 void emit2_Mem_Imm(x86 x, int off, int base, int imm)
           
 void emit2_Mem(x86 x, int imm)
           
 void emit2_Mem(x86 x, int off, int base)
           
 void emit2_Mem(x86 x, int base, int ind, int scale, int off)
           
 void emit2_Reg_Mem(x86 x, int r1, int addr)
           
 void emit2_Reg_Mem(x86 x, int r1, int off, int base)
           
 void emit2_Reg_Mem(x86 x, int r1, int base, int ind, int scale, int off)
           
 void emit2_Reg_Reg(x86 x, int r1, int r2)
           
 void emit2_Reg(x86 x, int r1)
           
 void emit2_SHIFT_Mem_Imm8(x86 x, int off, int base, byte imm)
           
 void emit2_SHIFT_Reg_Imm8(x86 x, int r1, byte imm)
           
 void emit2(x86 x)
           
 void emit3_Reg_Mem(x86 x, int r1, int addr)
           
 void emit3_Reg_Mem(x86 x, int r1, int off, int base)
           
 void emit3_Reg_Mem(x86 x, int r1, int base, int ind, int mult, int off)
           
 void emit3_Reg_Reg(x86 x, int r1, int r2)
           
 void emitARITH_Mem_Imm(x86 x, int off, int base, int imm)
           
 void emitARITH_Reg_Imm(x86 x, int r1, int imm)
           
 void emitARITH_Reg_Mem(x86 x, int r1, int off, int base)
           
 void emitARITH_Reg_Reg(x86 x, int r1, int r2)
           
 void emitCALL_Back(x86 x, Object target)
           
 void emitCALL_Forw(x86 x, Object target)
           
 void emitCALL_rel32(x86 x, int address)
           
 void emitCJUMP_Back(x86 x, Object target)
           
 void emitCJUMP_Forw_Short(x86 x, Object target)
           
 void emitCJUMP_Forw(x86 x, Object target)
           
 void emitCJUMP_Short(x86 x, byte offset)
           
 void emitDATA(int data)
           
 void emitJUMP_Back(x86 x, Object target)
           
 void emitJUMP_Forw_Short(x86 x, Object target)
           
 void emitJUMP_Forw(x86 x, Object target)
           
 void emitJUMP_Short(x86 x, byte offset)
           
 void emitprefix(byte prefix)
           
 void emitPUSH_i(int imm)
           
 void emitSHLD_r_r_rc(int r1, int r2)
           
 void emitShort_Reg_Imm(x86 x, int r1, int imm)
           
 void emitShort_Reg(x86 x, int r1)
           
 void emitSHRD_r_r_rc(int r1, int r2)
           
 void endDynamicPatch()
           
static boolean fits_signed(int val, int bits)
           
static boolean fits(int val, int bits)
           
 int getBranchTarget(Object target)
           
 Map getBranchTargetMap()
           
 CodeAllocator.x86CodeBuffer getCodeBuffer()
           
 CodeAddress getCurrentAddress()
           
 int getCurrentOffset()
           
 CodeAddress getStartAddress()
           
 void patch1(int offset, byte value)
           
 void patch4_endian(int offset, int value)
           
 void recordAbsoluteReference(int patchsize, Object target)
           
 void recordBranchTarget(Object target)
           
 void recordForwardBranch(int patchsize, Object target)
           
 void resolveForwardBranches(Object target)
           
 void setEntrypoint()
           
 void skip(int nbytes)
           
 void startDynamicPatch(int size)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRACE

public static boolean TRACE
Constructor Detail

x86Assembler

public x86Assembler(int num_targets,
                    int est_size,
                    int offset,
                    int alignment)
Method Detail

getCodeBuffer

public CodeAllocator.x86CodeBuffer getCodeBuffer()

getCurrentOffset

public int getCurrentOffset()

getCurrentAddress

public CodeAddress getCurrentAddress()

getStartAddress

public CodeAddress getStartAddress()

patch1

public void patch1(int offset,
                   byte value)

patch4_endian

public void patch4_endian(int offset,
                          int value)

containsTarget

public boolean containsTarget(Object target)

recordBranchTarget

public void recordBranchTarget(Object target)

getBranchTarget

public int getBranchTarget(Object target)

getBranchTargetMap

public Map getBranchTargetMap()

recordForwardBranch

public void recordForwardBranch(int patchsize,
                                Object target)

recordAbsoluteReference

public void recordAbsoluteReference(int patchsize,
                                    Object target)

resolveForwardBranches

public void resolveForwardBranches(Object target)

startDynamicPatch

public void startDynamicPatch(int size)

endDynamicPatch

public void endDynamicPatch()

emitprefix

public void emitprefix(byte prefix)

emitPUSH_i

public void emitPUSH_i(int imm)

emit2_SHIFT_Mem_Imm8

public void emit2_SHIFT_Mem_Imm8(x86 x,
                                 int off,
                                 int base,
                                 byte imm)

emit2_SHIFT_Reg_Imm8

public void emit2_SHIFT_Reg_Imm8(x86 x,
                                 int r1,
                                 byte imm)

emitSHLD_r_r_rc

public void emitSHLD_r_r_rc(int r1,
                            int r2)

emitSHRD_r_r_rc

public void emitSHRD_r_r_rc(int r1,
                            int r2)

emitShort_Reg

public void emitShort_Reg(x86 x,
                          int r1)

emitShort_Reg_Imm

public void emitShort_Reg_Imm(x86 x,
                              int r1,
                              int imm)

emit1

public void emit1(x86 x)

emit1_Imm8

public void emit1_Imm8(x86 x,
                       byte imm)

emit1_Imm16

public void emit1_Imm16(x86 x,
                        char imm)

emit1_Imm32

public void emit1_Imm32(x86 x,
                        int imm)

emit2

public void emit2(x86 x)

emit2_FPReg

public void emit2_FPReg(x86 x,
                        int r)

emit2_Mem

public void emit2_Mem(x86 x,
                      int imm)

emit2_Mem

public void emit2_Mem(x86 x,
                      int off,
                      int base)

emit2_Mem

public void emit2_Mem(x86 x,
                      int base,
                      int ind,
                      int scale,
                      int off)

emit2_Mem_Imm

public void emit2_Mem_Imm(x86 x,
                          int off,
                          int base,
                          int imm)

emit2_Reg

public void emit2_Reg(x86 x,
                      int r1)

emit2_Reg_Mem

public void emit2_Reg_Mem(x86 x,
                          int r1,
                          int addr)

emit2_Reg_Mem

public void emit2_Reg_Mem(x86 x,
                          int r1,
                          int off,
                          int base)

emit2_Reg_Mem

public void emit2_Reg_Mem(x86 x,
                          int r1,
                          int base,
                          int ind,
                          int scale,
                          int off)

emit2_Reg_Reg

public void emit2_Reg_Reg(x86 x,
                          int r1,
                          int r2)

emit3_Reg_Reg

public void emit3_Reg_Reg(x86 x,
                          int r1,
                          int r2)

emit3_Reg_Mem

public void emit3_Reg_Mem(x86 x,
                          int r1,
                          int addr)

emit3_Reg_Mem

public void emit3_Reg_Mem(x86 x,
                          int r1,
                          int off,
                          int base)

emit3_Reg_Mem

public void emit3_Reg_Mem(x86 x,
                          int r1,
                          int base,
                          int ind,
                          int mult,
                          int off)

emitARITH_Mem_Imm

public void emitARITH_Mem_Imm(x86 x,
                              int off,
                              int base,
                              int imm)

emitARITH_Reg_Imm

public void emitARITH_Reg_Imm(x86 x,
                              int r1,
                              int imm)

emitARITH_Reg_Reg

public void emitARITH_Reg_Reg(x86 x,
                              int r1,
                              int r2)

emitARITH_Reg_Mem

public void emitARITH_Reg_Mem(x86 x,
                              int r1,
                              int off,
                              int base)

emitCJUMP_Back

public void emitCJUMP_Back(x86 x,
                           Object target)

emitCJUMP_Short

public void emitCJUMP_Short(x86 x,
                            byte offset)

emitCJUMP_Forw_Short

public void emitCJUMP_Forw_Short(x86 x,
                                 Object target)

emitCJUMP_Forw

public void emitCJUMP_Forw(x86 x,
                           Object target)

emitJUMP_Back

public void emitJUMP_Back(x86 x,
                          Object target)

emitJUMP_Short

public void emitJUMP_Short(x86 x,
                           byte offset)

emitJUMP_Forw_Short

public void emitJUMP_Forw_Short(x86 x,
                                Object target)

emitJUMP_Forw

public void emitJUMP_Forw(x86 x,
                          Object target)

emitCALL_rel32

public void emitCALL_rel32(x86 x,
                           int address)

emitCALL_Back

public void emitCALL_Back(x86 x,
                          Object target)

emitCALL_Forw

public void emitCALL_Forw(x86 x,
                          Object target)

emitDATA

public void emitDATA(int data)

skip

public void skip(int nbytes)

setEntrypoint

public void setEntrypoint()

fits

public static boolean fits(int val,
                           int bits)

fits_signed

public static boolean fits_signed(int val,
                                  int bits)


Copyright © 2001-2005 John Whaley. All Rights Reserved.