aboutsummaryrefslogtreecommitdiff
path: root/opcodes/i386-dis.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2007-10-03 19:30:44 +0000
committerH.J. Lu <hjl.tools@gmail.com>2007-10-03 19:30:44 +0000
commit9b60702d0cd0fb96a19a426b39e982f2bb8db26b (patch)
treeffc2bf81146b50eaf1723c150d142768c58b0e1b /opcodes/i386-dis.c
parent458fa39293d524ea898ec43fd4a6be8e31b850d6 (diff)
downloadgdb-9b60702d0cd0fb96a19a426b39e982f2bb8db26b.zip
gdb-9b60702d0cd0fb96a19a426b39e982f2bb8db26b.tar.gz
gdb-9b60702d0cd0fb96a19a426b39e982f2bb8db26b.tar.bz2
2007-10-03 H.J. Lu <hongjiu.lu@intel.com>
* i386-dis.c (OP_REG): Set add to 0 only when needed. (OP_C): Likewise. (OP_D): Likewise. (OP_MMX): Likewise. (OP_XMM): Likewise. (OP_EM): Likewise. (OP_MXC): Likewise. (OP_EX): Likewise.
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r--opcodes/i386-dis.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 968c0a2..84572b2 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -6896,10 +6896,12 @@ static void
OP_REG (int code, int sizeflag)
{
const char *s;
- int add = 0;
+ int add;
USED_REX (REX_B);
if (rex & REX_B)
add = 8;
+ else
+ add = 0;
switch (code)
{
@@ -7372,7 +7374,7 @@ OP_DSreg (int code, int sizeflag)
static void
OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
- int add = 0;
+ int add;
if (rex & REX_R)
{
USED_REX (REX_R);
@@ -7384,6 +7386,8 @@ OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
used_prefixes |= PREFIX_LOCK;
add = 8;
}
+ else
+ add = 0;
sprintf (scratchbuf, "%%cr%d", modrm.reg + add);
oappend (scratchbuf + intel_syntax);
}
@@ -7391,10 +7395,12 @@ OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
static void
OP_D (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
- int add = 0;
+ int add;
USED_REX (REX_R);
if (rex & REX_R)
add = 8;
+ else
+ add = 0;
if (intel_syntax)
sprintf (scratchbuf, "db%d", modrm.reg + add);
else
@@ -7424,10 +7430,12 @@ OP_MMX (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
used_prefixes |= (prefixes & PREFIX_DATA);
if (prefixes & PREFIX_DATA)
{
- int add = 0;
+ int add;
USED_REX (REX_R);
if (rex & REX_R)
add = 8;
+ else
+ add = 0;
sprintf (scratchbuf, "%%xmm%d", modrm.reg + add);
}
else
@@ -7438,10 +7446,12 @@ OP_MMX (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
static void
OP_XMM (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
{
- int add = 0;
+ int add;
USED_REX (REX_R);
if (rex & REX_R)
add = 8;
+ else
+ add = 0;
sprintf (scratchbuf, "%%xmm%d", modrm.reg + add);
oappend (scratchbuf + intel_syntax);
}
@@ -7466,11 +7476,13 @@ OP_EM (int bytemode, int sizeflag)
used_prefixes |= (prefixes & PREFIX_DATA);
if (prefixes & PREFIX_DATA)
{
- int add = 0;
+ int add;
USED_REX (REX_B);
if (rex & REX_B)
add = 8;
+ else
+ add = 0;
sprintf (scratchbuf, "%%xmm%d", modrm.rm + add);
}
else
@@ -7516,7 +7528,7 @@ OP_MXC (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
static void
OP_EX (int bytemode, int sizeflag)
{
- int add = 0;
+ int add;
if (modrm.mod != 3)
{
OP_E (bytemode, sizeflag);
@@ -7525,6 +7537,8 @@ OP_EX (int bytemode, int sizeflag)
USED_REX (REX_B);
if (rex & REX_B)
add = 8;
+ else
+ add = 0;
/* Skip mod/rm byte. */
MODRM_CHECK;