i386: Document memory size reference in assembler

Cui, Lili lili.cui@intel.com
Tue Jun 25 08:56:00 GMT 2019


Update patch,  separate suffix x/y/z with b/w/d/q .


-----Original Message-----
From: Jan Beulich [mailto:JBeulich@suse.com] 
Sent: Monday, June 24, 2019 3:05 PM
To: Cui, Lili <lili.cui@intel.com>
Cc: Zhang, Annita <annita.zhang@intel.com>; Lu, Hongjiu <hongjiu.lu@intel.com>; Liu, Hongtao <hongtao.liu@intel.com>; Xiao, Wei3 <wei3.xiao@intel.com>; binutils@sourceware.org
Subject: Re: i386: Document memory size reference in assembler

>>> On 24.06.19 at 05:30, <lili.cui@intel.com> wrote:
> --- a/gas/doc/c-i386.texi
> +++ b/gas/doc/c-i386.texi
> @@ -583,12 +583,16 @@ instruction, do @emph{not} have reversed order.  
> @ref{i386-Bugs}.
> @item
> In AT&T syntax the size of memory operands is determined from the last 
> character of the instruction mnemonic.  Mnemonic suffixes of @samp{b}, 
> -@samp{w}, @samp{l} and @samp{q} specify byte (8-bit), word (16-bit), 
> long
> -(32-bit) and quadruple word (64-bit) memory references.  Intel syntax 
> accomplishes -this by prefixing memory operands (@emph{not} the 
> instruction mnemonics) with -@samp{byte ptr}, @samp{word ptr}, 
> @samp{dword ptr} and @samp{qword ptr}.  Thus, -Intel @samp{mov al, 
> byte ptr @var{foo}} is @samp{movb @var{foo}, %al} in AT&T -syntax.
> +@samp{w}, @samp{l}, @samp{q}, @samp{x}, @samp{y} and @samp{z} specify 
> +byte (8-bit), word (16-bit), long (32-bit), quadruple word (64-bit), 
> +xmm (128-bit vector), ymm (256-bit vector) and zmm (512-bit vector) 
> +memory references.  Intel syntax accomplishes this by prefixing 
> +memory operands (@emph{not}the instruction mnemonics) with @samp{byte 
> +ptr}, @samp{word ptr}, @samp{dword ptr}, @samp{qword ptr}, 
> +@samp{xmmword ptr}, @samp{ymmword ptr} and @samp{zmmword ptr}.  Thus, 
> +Intel syntax @samp{mov al, byte ptr @var{foo}} is @samp{movb 
> +@var{foo}, %al} in AT&T syntax.  In Intel syntax, @samp{fword ptr}, 
> +@samp{tword ptr} and @samp{oword ptr} specify 48-bit, 80-bit and 128-bit memory references.

This makes it sound as if the x/y/z suffixes were universally applicable, just like the b/w/d/q ones are, but that's not the case: They're used
(permitted) only when there's no other way to disambiguate an insn.

Jan


-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-i386-Document-memory-size-reference-in-assembler.patch
Type: application/octet-stream
Size: 2263 bytes
Desc: 0001-i386-Document-memory-size-reference-in-assembler.patch
URL: <https://sourceware.org/pipermail/binutils/attachments/20190625/6ea2cccb/attachment.obj>


More information about the Binutils mailing list