This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH 4/6] x86/MPX: bndmk, bndldx, and bndstx only allow a memory operand
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Jan Beulich <JBeulich at suse dot com>
- Cc: kirill dot yukhin at intel dot com, Binutils <binutils at sourceware dot org>
- Date: Tue, 8 Oct 2013 08:28:52 -0700
- Subject: Re: [PATCH 4/6] x86/MPX: bndmk, bndldx, and bndstx only allow a memory operand
- Authentication-results: sourceware.org; auth=none
- References: <5254349502000078000F9A3D at nat28 dot tlf dot novell dot com> <5254361802000078000F9A59 at nat28 dot tlf dot novell dot com>
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.