/* Get a 8/16/32-bit unsigned value out of the insn stream. */
-static UChar getUChar ( ULong delta )
+static UChar getUChar ( Long delta )
{
UChar v = guest_code[delta+0];
return v;
}
-//.. static UInt getUDisp16 ( ULong delta )
+//.. static UInt getUDisp16 ( Long delta )
//.. {
//.. UInt v = guest_code[delta+1]; v <<= 8;
//.. v |= guest_code[delta+0];
//.. return v & 0xFFFF;
//.. }
//..
-//.. static UInt getUDisp ( Int size, ULong delta )
+//.. static UInt getUDisp ( Int size, Long delta )
//.. {
//.. switch (size) {
//.. case 4: return getUDisp32(delta);
/* Get a byte value out of the insn stream and sign-extend to 64
bits. */
-static Long getSDisp8 ( ULong delta )
+static Long getSDisp8 ( Long delta )
{
return extend_s_8to64( guest_code[delta] );
}
/* Get a 16-bit value out of the insn stream and sign-extend to 64
bits. */
-static Long getSDisp16 ( ULong delta )
+static Long getSDisp16 ( Long delta )
{
UInt v = guest_code[delta+1]; v <<= 8;
v |= guest_code[delta+0];
/* Get a 32-bit value out of the insn stream and sign-extend to 64
bits. */
-static Long getSDisp32 ( ULong delta )
+static Long getSDisp32 ( Long delta )
{
UInt v = guest_code[delta+3]; v <<= 8;
v |= guest_code[delta+2]; v <<= 8;
}
/* Get a 64-bit value out of the insn stream. */
-static Long getDisp64 ( ULong delta )
+static Long getDisp64 ( Long delta )
{
ULong v = 0;
v |= guest_code[delta+7]; v <<= 8;
/* Note: because AMD64 doesn't allow 64-bit literals, it is an error
if this is called with size==8. Should not happen. */
-static Long getSDisp ( Int size, ULong delta )
+static Long getSDisp ( Int size, Long delta )
{
switch (size) {
case 4: return getSDisp32(delta);
}
static
-IRTemp disAMode ( Int* len, Prefix pfx, ULong delta,
+IRTemp disAMode ( Int* len, Prefix pfx, Long delta,
HChar* buf, Int extra_bytes )
{
UChar mod_reg_rm = getUChar(delta);
beginning at delta. Is useful for getting hold of literals beyond
the end of the amode before it has been disassembled. */
-static UInt lengthAMode ( Prefix pfx, ULong delta )
+static UInt lengthAMode ( Prefix pfx, Long delta )
{
UChar mod_reg_rm = getUChar(delta);
delta++;
IROp op8,
Bool keep,
Int size,
- ULong delta0,
+ Long delta0,
HChar* t_amd64opc )
{
HChar dis_buf[50];
IROp op8,
Bool keep,
Int size,
- ULong delta0,
+ Long delta0,
HChar* t_amd64opc )
{
HChar dis_buf[50];
static
ULong dis_mov_E_G ( Prefix pfx,
Int size,
- ULong delta0 )
+ Long delta0 )
{
Int len;
UChar rm = getUChar(delta0);
static
ULong dis_mov_G_E ( Prefix pfx,
Int size,
- ULong delta0 )
+ Long delta0 )
{
Int len;
UChar rm = getUChar(delta0);
ULong dis_op_imm_A ( Int size,
IROp op8,
Bool keep,
- ULong delta,
+ Long delta,
HChar* t_amd64opc )
{
Int size4 = imin(size,4);
/* Sign- and Zero-extending moves. */
static
ULong dis_movx_E_G ( Prefix pfx,
- ULong delta, Int szs, Int szd, Bool sign_extend )
+ Long delta, Int szs, Int szd, Bool sign_extend )
{
UChar rm = getUChar(delta);
if (epartIsReg(rm)) {
static
ULong dis_Grp1 ( Prefix pfx,
- ULong delta, UChar modrm,
+ Long delta, UChar modrm,
Int am_sz, Int d_sz, Int sz, Long d64 )
{
Int len;
static
ULong dis_Grp2 ( Prefix pfx,
- ULong delta, UChar modrm,
+ Long delta, UChar modrm,
Int am_sz, Int d_sz, Int sz, IRExpr* shift_expr,
HChar* shift_expr_txt )
{
/* Group 8 extended opcodes (but BT/BTS/BTC/BTR only). */
static
ULong dis_Grp8_Imm ( Prefix pfx,
- ULong delta, UChar modrm,
+ Long delta, UChar modrm,
Int am_sz, Int sz, ULong src_val,
Bool* decode_OK )
{
/* Group 3 extended opcodes. */
static
-ULong dis_Grp3 ( Prefix pfx, Int sz, ULong delta )
+ULong dis_Grp3 ( Prefix pfx, Int sz, Long delta )
{
Long d64;
UChar modrm;
/* Group 4 extended opcodes. */
static
-ULong dis_Grp4 ( Prefix pfx, ULong delta )
+ULong dis_Grp4 ( Prefix pfx, Long delta )
{
Int alen;
UChar modrm;
/* Group 5 extended opcodes. */
static
-ULong dis_Grp5 ( Prefix pfx, Int sz, ULong delta, DisResult* dres )
+ULong dis_Grp5 ( Prefix pfx, Int sz, Long delta, DisResult* dres )
{
Int len;
UChar modrm;
static
ULong dis_mul_E_G ( Prefix pfx,
Int size,
- ULong delta0 )
+ Long delta0 )
{
Int alen;
HChar dis_buf[50];
static
ULong dis_imul_I_E_G ( Prefix pfx,
Int size,
- ULong delta,
+ Long delta,
Int litsize )
{
Long d64;
static
ULong dis_FPU ( /*OUT*/Bool* decode_ok,
- Prefix pfx, ULong delta )
+ Prefix pfx, Long delta )
{
Int len;
UInt r_src, r_dst;
static
ULong dis_MMXop_regmem_to_reg ( Prefix pfx,
- ULong delta,
+ Long delta,
UChar opc,
HChar* name,
Bool show_granularity )
/* Vector by scalar shift of G by the amount specified at the bottom
of E. This is a straight copy of dis_SSE_shiftG_byE. */
-static ULong dis_MMX_shiftG_byE ( Prefix pfx, ULong delta,
+static ULong dis_MMX_shiftG_byE ( Prefix pfx, Long delta,
HChar* opname, IROp op )
{
HChar dis_buf[50];
straight copy of dis_SSE_shiftE_imm. */
static
-ULong dis_MMX_shiftE_imm ( ULong delta, HChar* opname, IROp op )
+ULong dis_MMX_shiftE_imm ( Long delta, HChar* opname, IROp op )
{
Bool shl, shr, sar;
UChar rm = getUChar(delta);
/* Completely handle all MMX instructions except emms. */
static
-ULong dis_MMX ( Bool* decode_ok, Prefix pfx, Int sz, ULong delta )
+ULong dis_MMX ( Bool* decode_ok, Prefix pfx, Int sz, Long delta )
{
Int len;
UChar modrm;
//.. v-size (no b- variant). */
//.. static
//.. UInt dis_SHLRD_Gv_Ev ( UChar sorb,
-//.. ULong delta, UChar modrm,
+//.. Long delta, UChar modrm,
//.. Int sz,
//.. IRExpr* shift_amt,
//.. Bool amt_is_literal,
//..
//..
//.. static
-//.. UInt dis_bt_G_E ( UChar sorb, Int sz, ULong delta, BtOp op )
+//.. UInt dis_bt_G_E ( UChar sorb, Int sz, Long delta, BtOp op )
//.. {
//.. HChar dis_buf[50];
//.. UChar modrm;
/* Handle BSF/BSR. Only v-size seems necessary. */
static
-ULong dis_bs_E_G ( Prefix pfx, Int sz, ULong delta, Bool fwds )
+ULong dis_bs_E_G ( Prefix pfx, Int sz, Long delta, Bool fwds )
{
Bool isReg;
UChar modrm;
static
ULong dis_cmpxchg_G_E ( Prefix pfx,
Int size,
- ULong delta0 )
+ Long delta0 )
{
HChar dis_buf[50];
Int len;
ULong dis_cmov_E_G ( Prefix pfx,
Int sz,
AMD64Condcode cond,
- ULong delta0 )
+ Long delta0 )
{
UChar rm = getUChar(delta0);
HChar dis_buf[50];
static
ULong dis_xadd_G_E ( /*OUT*/Bool* decode_ok,
- Prefix pfx, Int sz, ULong delta0 )
+ Prefix pfx, Int sz, Long delta0 )
{
Int len;
UChar rm = getUChar(delta0);
//.. /* Move 16 bits from Ew (ireg or mem) to G (a segment register). */
//..
//.. static
-//.. UInt dis_mov_Ew_Sw ( UChar sorb, ULong delta0 )
+//.. UInt dis_mov_Ew_Sw ( UChar sorb, Long delta0 )
//.. {
//.. Int len;
//.. IRTemp addr;
*/
static ULong dis_SSE_E_to_G_all_wrk (
- Prefix pfx, ULong delta,
+ Prefix pfx, Long delta,
HChar* opname, IROp op,
Bool invertG
)
/* All lanes SSE binary operation, G = G `op` E. */
static
-ULong dis_SSE_E_to_G_all ( Prefix pfx, ULong delta,
+ULong dis_SSE_E_to_G_all ( Prefix pfx, Long delta,
HChar* opname, IROp op )
{
return dis_SSE_E_to_G_all_wrk( pfx, delta, opname, op, False );
/* All lanes SSE binary operation, G = (not G) `op` E. */
static
-ULong dis_SSE_E_to_G_all_invG ( Prefix pfx, ULong delta,
+ULong dis_SSE_E_to_G_all_invG ( Prefix pfx, Long delta,
HChar* opname, IROp op )
{
return dis_SSE_E_to_G_all_wrk( pfx, delta, opname, op, True );
/* Lowest 32-bit lane only SSE binary operation, G = G `op` E. */
-static ULong dis_SSE_E_to_G_lo32 ( Prefix pfx, ULong delta,
+static ULong dis_SSE_E_to_G_lo32 ( Prefix pfx, Long delta,
HChar* opname, IROp op )
{
HChar dis_buf[50];
/* Lower 64-bit lane only SSE binary operation, G = G `op` E. */
-static ULong dis_SSE_E_to_G_lo64 ( Prefix pfx, ULong delta,
+static ULong dis_SSE_E_to_G_lo64 ( Prefix pfx, Long delta,
HChar* opname, IROp op )
{
HChar dis_buf[50];
/* All lanes unary SSE operation, G = op(E). */
static ULong dis_SSE_E_to_G_unary_all (
- Prefix pfx, ULong delta,
+ Prefix pfx, Long delta,
HChar* opname, IROp op
)
{
/* Lowest 32-bit lane only unary SSE operation, G = op(E). */
static ULong dis_SSE_E_to_G_unary_lo32 (
- Prefix pfx, ULong delta,
+ Prefix pfx, Long delta,
HChar* opname, IROp op
)
{
/* Lowest 64-bit lane only unary SSE operation, G = op(E). */
static ULong dis_SSE_E_to_G_unary_lo64 (
- Prefix pfx, ULong delta,
+ Prefix pfx, Long delta,
HChar* opname, IROp op
)
{
G = E `op` G (eLeft == True)
*/
static ULong dis_SSEint_E_to_G(
- Prefix pfx, ULong delta,
+ Prefix pfx, Long delta,
HChar* opname, IROp op,
Bool eLeft
)
/* Handles SSE 32F comparisons. */
-static ULong dis_SSEcmp_E_to_G ( Prefix pfx, ULong delta,
+static ULong dis_SSEcmp_E_to_G ( Prefix pfx, Long delta,
HChar* opname, Bool all_lanes, Int sz )
{
HChar dis_buf[50];
/* Vector by scalar shift of G by the amount specified at the bottom
of E. */
-static ULong dis_SSE_shiftG_byE ( Prefix pfx, ULong delta,
+static ULong dis_SSE_shiftG_byE ( Prefix pfx, Long delta,
HChar* opname, IROp op )
{
HChar dis_buf[50];
static
ULong dis_SSE_shiftE_imm ( Prefix pfx,
- ULong delta, HChar* opname, IROp op )
+ Long delta, HChar* opname, IROp op )
{
Bool shl, shr, sar;
UChar rm = getUChar(delta);
/* Holds eip at the start of the insn, so that we can print
consistent error messages for unimplemented insns. */
- ULong delta_start = delta;
+ Long delta_start = delta;
/* sz denotes the nominal data-op size of the insn; we change it to
2 if an 0x66 prefix is seen and 8 if REX.W is 1. In case of
case 0xDF:
if (haveF2orF3(pfx)) goto decode_failure;
if (sz == 4 && haveNo66noF2noF3(pfx)) {
- ULong delta0 = delta;
- Bool decode_OK = False;
+ Long delta0 = delta;
+ Bool decode_OK = False;
delta = dis_FPU ( &decode_OK, pfx, delta );
if (!decode_OK) {
delta = delta0;
case 0xE1: /* PSRAgg (src)mmxreg-or-mem, (dst)mmxreg */
case 0xE2:
{
- ULong delta0 = delta-1;
+ Long delta0 = delta-1;
Bool decode_OK = False;
/* If sz==2 this is SSE, and we assume sse idec has