This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 4/6] x86/MPX: bndmk, bndldx, and bndstx only allow a memory operand


>>> On 08.10.13 at 17:28, "H.J. Lu" <hjl.tools@gmail.com> wrote:
> On Tue, Oct 8, 2013 at 7:43 AM, Jan Beulich <JBeulich@suse.com> wrote:
>> bndmk, bndldx, and bndstx only allow memory operands, so decoding should
>> use OP_M() instead of OP_E().
> 
> The change isn't wrong.  But register operand will never be used since
> MOD != 3.  Also, in this case, only register operand is possible for nop
> since MOD == 0x3.  If we want to make the change, we should also
> replace Ev with Gv.

Looks like I didn't look at mod_table[]'s usage closely enough - I
guess for consistency reasons I'll withdraw the patch rather than
extending it (even though performance would perhaps be slightly
improved by using the more specific operand handling routines
here, but that would be the case for various other code paths /
table entries too I believe).

Jan

>> opcodes/
>> 2013-10-08  Jan Beulich <jbeulich@suse.com>
>>
>>         * i386-dis.c (Mv_bnd): New.
>>         (mod_table): Use it for bndmk, bndldx, and bndstx.
>>
>> --- 2013-10-07/opcodes/i386-dis.c
>> +++ 2013-10-07/opcodes/i386-dis.c
>> @@ -250,6 +250,7 @@ fetch_data (struct disassemble_info *inf
>>  #define Mo { OP_M, o_mode }
>>  #define Mp { OP_M, f_mode }            /* 32 or 48 bit memory operand for 
> LDS, LES etc */
>>  #define Mq { OP_M, q_mode }
>> +#define Mv_bnd { OP_M, v_bnd_mode }
>>  #define Mx { OP_M, x_mode }
>>  #define Mxmm { OP_M, xmm_mode }
>>  #define Gb { OP_G, b_mode }
>> @@ -11126,17 +11127,17 @@ static const struct dis386 mod_table[][2
>>    },
>>    {
>>      /* MOD_0F1A_PREFIX_0 */
>> -    { "bndldx",                { Gbnd, Ev_bnd } },
>> +    { "bndldx",                { Gbnd, Mv_bnd } },
>>      { "nopQ",          { Ev } },
>>    },
>>    {
>>      /* MOD_0F1B_PREFIX_0 */
>> -    { "bndstx",                { Ev_bnd, Gbnd } },
>> +    { "bndstx",                { Mv_bnd, Gbnd } },
>>      { "nopQ",          { Ev } },
>>    },
>>    {
>>      /* MOD_0F1B_PREFIX_1 */
>> -    { "bndmk",         { Gbnd, Ev_bnd } },
>> +    { "bndmk",         { Gbnd, Mv_bnd } },
>>      { "nopQ",          { Ev } },
>>    },
>>    {
>>
> 
> 
> 
> -- 
> H.J.




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]