[PATCH] x86/APX: drop %SW disassembler macro again
Jan Beulich
jbeulich@suse.com
Mon Aug 26 10:13:48 GMT 2024
On 26.08.2024 10:41, Jiang, Haochen wrote:
>> From: Jan Beulich <jbeulich@suse.com>
>> Sent: Friday, August 23, 2024 6:44 PM
>>
>> Not the least due to its extremely rare use I didn't really like that macro's
>> introduction. Adjust swap_operand() accordingly instead.
>>
>> --- a/opcodes/i386-dis.c
>> +++ b/opcodes/i386-dis.c
>> @@ -1809,8 +1809,6 @@ struct dis386 {
>> in MAP4.
>> "ZU" => print 'zu' if EVEX.ZU=1.
>> "SC" => print suffix SCC for SCC insns
>> - "SW" => print '.s' to indicate operands were swapped when suffix_always is
>> - true.
>> "YK" keep unused, to avoid ambiguity with the combined use of Y and K.
>> "YX" keep unused, to avoid ambiguity with the combined use of Y and X.
>> "LQ" => print 'l' ('d' in Intel mode) or 'q' for memory operand, cond @@ -
>> 10251,9 +10249,21 @@ static const char *const scc_suffix[16] static void
>> swap_operand (instr_info *ins) {
>> - ins->mnemonicendp[0] = '.';
>> - ins->mnemonicendp[1] = 's';
>> - ins->mnemonicendp[2] = '\0';
>> + char *p = ins->mnemonicendp;
>> +
>> + if (p[-1] == '}')
>> + {
>> + while (*--p != '{')
>
> If I remember correctly, which is once mentioned in your review, moving
> mnemonic pointer backwards is not recommended.
>
> Should we break this rule to eliminate the macro?
I wouldn't call this a "rule". To me the question is where this is done,
and whether all special cases are covered. Doing so centrally in
swap_operand() looks okay(ish) to me.
Jan
More information about the Binutils
mailing list