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

H.J. Lu hjl.tools@gmail.com
Tue Oct 8 15:28:00 GMT 2013


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.

> 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.



More information about the Binutils mailing list