}
/* Fetch a byte from the guest insn stream. */
-static UChar getIByte ( UInt delta )
+static UChar getIByte ( Int delta )
{
return guest_code[delta];
}
/* Get a 8/16/32-bit unsigned value out of the insn stream. */
-static UChar getUChar ( UInt delta )
+static UChar getUChar ( Int delta )
{
UChar v = guest_code[delta+0];
return toUChar(v);
}
-static UInt getUDisp16 ( UInt delta )
+static UInt getUDisp16 ( Int delta )
{
UInt v = guest_code[delta+1]; v <<= 8;
v |= guest_code[delta+0];
return v & 0xFFFF;
}
-static UInt getUDisp32 ( UInt delta )
+static UInt getUDisp32 ( Int delta )
{
UInt v = guest_code[delta+3]; v <<= 8;
v |= guest_code[delta+2]; v <<= 8;
return v;
}
-static UInt getUDisp ( Int size, UInt delta )
+static UInt getUDisp ( Int size, Int delta )
{
switch (size) {
case 4: return getUDisp32(delta);
/* Get a byte value out of the insn stream and sign-extend to 32
bits. */
-static UInt getSDisp8 ( UInt delta )
+static UInt getSDisp8 ( Int delta )
{
return extend_s_8to32( (UInt) (guest_code[delta]) );
}
-static UInt getSDisp16 ( UInt delta0 )
+static UInt getSDisp16 ( Int delta0 )
{
UChar* eip = (UChar*)(&guest_code[delta0]);
UInt d = *eip++;
return extend_s_16to32(d);
}
-static UInt getSDisp ( Int size, UInt delta )
+static UInt getSDisp ( Int size, Int delta )
{
switch (size) {
case 4: return getUDisp32(delta);
}
static
-IRTemp disAMode ( Int* len, UChar sorb, UInt delta, HChar* buf )
+IRTemp disAMode ( Int* len, UChar sorb, Int delta, HChar* buf )
{
UChar mod_reg_rm = getIByte(delta);
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 ( UInt delta )
+static UInt lengthAMode ( Int delta )
{
UChar mod_reg_rm = getIByte(delta); delta++;
IROp op8,
Bool keep,
Int size,
- UInt delta0,
+ Int delta0,
HChar* t_x86opc )
{
HChar dis_buf[50];
IROp op8,
Bool keep,
Int size,
- UInt delta0,
+ Int delta0,
HChar* t_x86opc )
{
HChar dis_buf[50];
static
UInt dis_mov_E_G ( UChar sorb,
Int size,
- UInt delta0 )
+ Int delta0 )
{
Int len;
UChar rm = getIByte(delta0);
static
UInt dis_mov_G_E ( UChar sorb,
Int size,
- UInt delta0 )
+ Int delta0 )
{
Int len;
UChar rm = getIByte(delta0);
Bool carrying,
IROp op8,
Bool keep,
- UInt delta,
+ Int delta,
HChar* t_x86opc )
{
IRType ty = szToITy(size);
/* Sign- and Zero-extending moves. */
static
-UInt dis_movx_E_G ( UChar sorb,
- UInt delta, Int szs, Int szd, Bool sign_extend )
+UInt dis_movx_E_G ( UChar sorb,
+ Int delta, Int szs, Int szd, Bool sign_extend )
{
UChar rm = getIByte(delta);
if (epartIsReg(rm)) {
static
UInt dis_Grp1 ( UChar sorb,
- UInt delta, UChar modrm,
+ Int delta, UChar modrm,
Int am_sz, Int d_sz, Int sz, UInt d32 )
{
Int len;
expression. */
static
-UInt dis_Grp2 ( UChar sorb,
- UInt delta, UChar modrm,
+UInt dis_Grp2 ( UChar sorb,
+ Int 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
-UInt dis_Grp8_Imm ( UChar sorb,
- UInt delta, UChar modrm,
+UInt dis_Grp8_Imm ( UChar sorb,
+ Int delta, UChar modrm,
Int am_sz, Int sz, UInt src_val,
Bool* decode_OK )
{
/* Group 3 extended opcodes. */
static
-UInt dis_Grp3 ( UChar sorb, Int sz, UInt delta )
+UInt dis_Grp3 ( UChar sorb, Int sz, Int delta )
{
UInt d32;
UChar modrm;
/* Group 4 extended opcodes. */
static
-UInt dis_Grp4 ( UChar sorb, UInt delta )
+UInt dis_Grp4 ( UChar sorb, Int delta )
{
Int alen;
UChar modrm;
/* Group 5 extended opcodes. */
static
-UInt dis_Grp5 ( UChar sorb, Int sz, UInt delta, DisResult* dres )
+UInt dis_Grp5 ( UChar sorb, Int sz, Int delta, DisResult* dres )
{
Int len;
UChar modrm;
static
UInt dis_mul_E_G ( UChar sorb,
Int size,
- UInt delta0 )
+ Int delta0 )
{
Int alen;
HChar dis_buf[50];
static
UInt dis_imul_I_E_G ( UChar sorb,
Int size,
- UInt delta,
+ Int delta,
Int litsize )
{
Int d32, alen;
static
-UInt dis_FPU ( Bool* decode_ok, UChar sorb, UInt delta )
+UInt dis_FPU ( Bool* decode_ok, UChar sorb, Int delta )
{
Int len;
UInt r_src, r_dst;
static
UInt dis_MMXop_regmem_to_reg ( UChar sorb,
- UInt delta,
+ Int 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 UInt dis_MMX_shiftG_byE ( UChar sorb, UInt delta,
+static UInt dis_MMX_shiftG_byE ( UChar sorb, Int delta,
HChar* opname, IROp op )
{
HChar dis_buf[50];
straight copy of dis_SSE_shiftE_imm. */
static
-UInt dis_MMX_shiftE_imm ( UInt delta, HChar* opname, IROp op )
+UInt dis_MMX_shiftE_imm ( Int delta, HChar* opname, IROp op )
{
Bool shl, shr, sar;
UChar rm = getIByte(delta);
/* Completely handle all MMX instructions except emms. */
static
-UInt dis_MMX ( Bool* decode_ok, UChar sorb, Int sz, UInt delta )
+UInt dis_MMX ( Bool* decode_ok, UChar sorb, Int sz, Int delta )
{
Int len;
UChar modrm;
v-size (no b- variant). */
static
UInt dis_SHLRD_Gv_Ev ( UChar sorb,
- UInt delta, UChar modrm,
+ Int delta, UChar modrm,
Int sz,
IRExpr* shift_amt,
Bool amt_is_literal,
static
-UInt dis_bt_G_E ( UChar sorb, Int sz, UInt delta, BtOp op )
+UInt dis_bt_G_E ( UChar sorb, Int sz, Int delta, BtOp op )
{
HChar dis_buf[50];
UChar modrm;
/* Handle BSF/BSR. Only v-size seems necessary. */
static
-UInt dis_bs_E_G ( UChar sorb, Int sz, UInt delta, Bool fwds )
+UInt dis_bs_E_G ( UChar sorb, Int sz, Int delta, Bool fwds )
{
Bool isReg;
UChar modrm;
static
UInt dis_cmpxchg_G_E ( UChar sorb,
Int size,
- UInt delta0 )
+ Int delta0 )
{
HChar dis_buf[50];
Int len;
UInt dis_cmov_E_G ( UChar sorb,
Int sz,
X86Condcode cond,
- UInt delta0 )
+ Int delta0 )
{
UChar rm = getIByte(delta0);
HChar dis_buf[50];
static
-UInt dis_xadd_G_E ( UChar sorb, Int sz, UInt delta0 )
+UInt dis_xadd_G_E ( UChar sorb, Int sz, Int delta0 )
{
Int len;
UChar rm = getIByte(delta0);
/* Move 16 bits from Ew (ireg or mem) to G (a segment register). */
static
-UInt dis_mov_Ew_Sw ( UChar sorb, UInt delta0 )
+UInt dis_mov_Ew_Sw ( UChar sorb, Int delta0 )
{
Int len;
IRTemp addr;
static
UInt dis_mov_Sw_Ew ( UChar sorb,
Int sz,
- UInt delta0 )
+ Int delta0 )
{
Int len;
IRTemp addr;
*/
static UInt dis_SSE_E_to_G_all_wrk (
- UChar sorb, UInt delta,
+ UChar sorb, Int delta,
HChar* opname, IROp op,
Bool invertG
)
/* All lanes SSE binary operation, G = G `op` E. */
static
-UInt dis_SSE_E_to_G_all ( UChar sorb, UInt delta, HChar* opname, IROp op )
+UInt dis_SSE_E_to_G_all ( UChar sorb, Int delta, HChar* opname, IROp op )
{
return dis_SSE_E_to_G_all_wrk( sorb, delta, opname, op, False );
}
/* All lanes SSE binary operation, G = (not G) `op` E. */
static
-UInt dis_SSE_E_to_G_all_invG ( UChar sorb, UInt delta,
+UInt dis_SSE_E_to_G_all_invG ( UChar sorb, Int delta,
HChar* opname, IROp op )
{
return dis_SSE_E_to_G_all_wrk( sorb, delta, opname, op, True );
/* Lowest 32-bit lane only SSE binary operation, G = G `op` E. */
-static UInt dis_SSE_E_to_G_lo32 ( UChar sorb, UInt delta,
+static UInt dis_SSE_E_to_G_lo32 ( UChar sorb, Int delta,
HChar* opname, IROp op )
{
HChar dis_buf[50];
/* Lower 64-bit lane only SSE binary operation, G = G `op` E. */
-static UInt dis_SSE_E_to_G_lo64 ( UChar sorb, UInt delta,
+static UInt dis_SSE_E_to_G_lo64 ( UChar sorb, Int delta,
HChar* opname, IROp op )
{
HChar dis_buf[50];
/* All lanes unary SSE operation, G = op(E). */
static UInt dis_SSE_E_to_G_unary_all (
- UChar sorb, UInt delta,
+ UChar sorb, Int delta,
HChar* opname, IROp op
)
{
/* Lowest 32-bit lane only unary SSE operation, G = op(E). */
static UInt dis_SSE_E_to_G_unary_lo32 (
- UChar sorb, UInt delta,
+ UChar sorb, Int delta,
HChar* opname, IROp op
)
{
/* Lowest 64-bit lane only unary SSE operation, G = op(E). */
static UInt dis_SSE_E_to_G_unary_lo64 (
- UChar sorb, UInt delta,
+ UChar sorb, Int delta,
HChar* opname, IROp op
)
{
G = E `op` G (eLeft == True)
*/
static UInt dis_SSEint_E_to_G(
- UChar sorb, UInt delta,
+ UChar sorb, Int delta,
HChar* opname, IROp op,
Bool eLeft
)
/* Handles SSE 32F comparisons. */
-static UInt dis_SSEcmp_E_to_G ( UChar sorb, UInt delta,
+static UInt dis_SSEcmp_E_to_G ( UChar sorb, Int 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 UInt dis_SSE_shiftG_byE ( UChar sorb, UInt delta,
+static UInt dis_SSE_shiftG_byE ( UChar sorb, Int delta,
HChar* opname, IROp op )
{
HChar dis_buf[50];
/* Vector by scalar shift of E by an immediate byte. */
static
-UInt dis_SSE_shiftE_imm ( UInt delta, HChar* opname, IROp op )
+UInt dis_SSE_shiftE_imm ( Int delta, HChar* opname, IROp op )
{
Bool shl, shr, sar;
UChar rm = getIByte(delta);
case 0xDD:
case 0xDE:
case 0xDF: {
- UInt delta0 = delta;
+ Int delta0 = delta;
Bool decode_OK = False;
delta = dis_FPU ( &decode_OK, sorb, delta );
if (!decode_OK) {
case 0xE1: /* PSRAgg (src)mmxreg-or-mem, (dst)mmxreg */
case 0xE2:
{
- UInt delta0 = delta-1;
+ Int delta0 = delta-1;
Bool decode_OK = False;
/* If sz==2 this is SSE, and we assume sse idec has