mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 09:58:19 +08:00
x86: make I disassembler macro available for new use
The {Q|Q} construct on lgdt/lidt and the slightly different {Q|IQ} struck me as odd when encountering. Realizing they both have the same effect, let's free up the I macro by using the former form of construct where needed (there aren't that many uses overall). With there now being several multi-character macros also re-do "alt" handling slightly: Terminate it when finding the closing brace, rather than after the next single character. Also set the flag only when actually in Intel syntax mode.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2020-06-26 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
|
* i386-dis.c: Adjust description of I macro.
|
||||||
|
(x86_64_table): Drop use of I.
|
||||||
|
(float_mem): Replace use of I.
|
||||||
|
(putop): Remove handling of I. Adjust setting/clearing of "alt".
|
||||||
|
|
||||||
2020-06-26 Jan Beulich <jbeulich@suse.com>
|
2020-06-26 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
* i386-dis.c: (print_insn): Avoid straight assignment to
|
* i386-dis.c: (print_insn): Avoid straight assignment to
|
||||||
|
@ -2250,8 +2250,7 @@ struct dis386 {
|
|||||||
'F' => print 'w' or 'l' depending on address size prefix (loop insns)
|
'F' => print 'w' or 'l' depending on address size prefix (loop insns)
|
||||||
'G' => print 'w' or 'l' depending on operand size prefix (i/o insns)
|
'G' => print 'w' or 'l' depending on operand size prefix (i/o insns)
|
||||||
'H' => print ",pt" or ",pn" branch hint
|
'H' => print ",pt" or ",pn" branch hint
|
||||||
'I' => honor following macro letter even in Intel mode (implemented only
|
'I' unused.
|
||||||
for some of the macro letters)
|
|
||||||
'J' unused.
|
'J' unused.
|
||||||
'K' => print 'd' or 'q' if rex prefix is present.
|
'K' => print 'd' or 'q' if rex prefix is present.
|
||||||
'L' => print 'l' if suffix_always is true
|
'L' => print 'l' if suffix_always is true
|
||||||
@ -6918,13 +6917,13 @@ static const struct dis386 x86_64_table[][2] = {
|
|||||||
|
|
||||||
/* X86_64_0F01_REG_0 */
|
/* X86_64_0F01_REG_0 */
|
||||||
{
|
{
|
||||||
{ "sgdt{Q|IQ}", { M }, 0 },
|
{ "sgdt{Q|Q}", { M }, 0 },
|
||||||
{ "sgdt", { M }, 0 },
|
{ "sgdt", { M }, 0 },
|
||||||
},
|
},
|
||||||
|
|
||||||
/* X86_64_0F01_REG_1 */
|
/* X86_64_0F01_REG_1 */
|
||||||
{
|
{
|
||||||
{ "sidt{Q|IQ}", { M }, 0 },
|
{ "sidt{Q|Q}", { M }, 0 },
|
||||||
{ "sidt", { M }, 0 },
|
{ "sidt", { M }, 0 },
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -12323,9 +12322,9 @@ static const char *float_mem[] = {
|
|||||||
"(bad)",
|
"(bad)",
|
||||||
"fst{s|}",
|
"fst{s|}",
|
||||||
"fstp{s|}",
|
"fstp{s|}",
|
||||||
"fldenvIC",
|
"fldenv{C|C}",
|
||||||
"fldcw",
|
"fldcw",
|
||||||
"fNstenvIC",
|
"fNstenv{C|C}",
|
||||||
"fNstcw",
|
"fNstcw",
|
||||||
/* da */
|
/* da */
|
||||||
"fiadd{l|}",
|
"fiadd{l|}",
|
||||||
@ -12359,9 +12358,9 @@ static const char *float_mem[] = {
|
|||||||
"fisttp{ll|}",
|
"fisttp{ll|}",
|
||||||
"fst{l||}",
|
"fst{l||}",
|
||||||
"fstp{l|}",
|
"fstp{l|}",
|
||||||
"frstorIC",
|
"frstor{C|C}",
|
||||||
"(bad)",
|
"(bad)",
|
||||||
"fNsaveIC",
|
"fNsave{C|C}",
|
||||||
"fNstsw",
|
"fNstsw",
|
||||||
/* de */
|
/* de */
|
||||||
"fiadd{s|}",
|
"fiadd{s|}",
|
||||||
@ -12735,11 +12734,9 @@ putop (const char *in_template, int sizeflag)
|
|||||||
while (*++p != '|')
|
while (*++p != '|')
|
||||||
if (*p == '}' || *p == '\0')
|
if (*p == '}' || *p == '\0')
|
||||||
abort ();
|
abort ();
|
||||||
|
alt = 1;
|
||||||
}
|
}
|
||||||
/* Fall through. */
|
break;
|
||||||
case 'I':
|
|
||||||
alt = 1;
|
|
||||||
continue;
|
|
||||||
case '|':
|
case '|':
|
||||||
while (*++p != '}')
|
while (*++p != '}')
|
||||||
{
|
{
|
||||||
@ -12748,6 +12745,7 @@ putop (const char *in_template, int sizeflag)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '}':
|
case '}':
|
||||||
|
alt = 0;
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
if (intel_syntax)
|
if (intel_syntax)
|
||||||
@ -13283,7 +13281,6 @@ putop (const char *in_template, int sizeflag)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
alt = 0;
|
|
||||||
}
|
}
|
||||||
*obufp = 0;
|
*obufp = 0;
|
||||||
mnemonicendp = obufp;
|
mnemonicendp = obufp;
|
||||||
|
Reference in New Issue
Block a user