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: ia32 suffix inconsistency


On Wed, Dec 15, 2010 at 8:25 AM, Jan Beulich <JBeulich@novell.com> wrote:
>>>> On 15.12.10 at 16:08, "H.J. Lu" <hjl.tools@gmail.com> wrote:
>> On Wed, Dec 15, 2010 at 3:11 AM, Etienne Lorrain
>> <etienne_lorrain@yahoo.fr> wrote:
>>> Hello,
>>>
>>> Just a small detail I think I have to report, with:
>>> GNU assembler (GNU Binutils for Debian) 2.20.1-system.20100303
>>> This assembler was configured for a target of `i486-linux-gnu'
>>> It is not a regression, i.e. same behaviour for years.
>>>
>>> We have to postfix 'l' (or 'w' or 'b') when using a simple 'mov' or 'test':
>>> $ echo 'mov $1,(%ebx)' | as
>>> {standard input}: Assembler messages:
>>> {standard input}:1: Error: no instruction mnemonic suffix given and no
>> register operands; can't size instruction
>>> $ echo 'movl $1,(%ebx)' | as
>>> $ echo 'test $1,(%ebx)' | as
>>> {standard input}: Assembler messages:
>>> {standard input}:1: Error: no instruction mnemonic suffix given and no
>> register operands; can't size instruction
>>> $
>>
>> Those insns don't extend immX to 32bit/64bit.
>>
>>> but other instructions like and/cmp/xor/or should also need such suffix,
>> isn't it?
>>> $ echo 'and $1,(%ebx)' | as
>>> $ echo 'cmp $1,(%ebx)' | as
>>> $ echo 'xor $1,(%ebx)' | as
>>> $ echo 'or $1,(%ebx)' | as
>>
>> Those insns extend immX to 32bit first.
>
> But whether an extension of the immediate happens shouldn't
> matter for diagnostics to be generated: It is as bogus to write
>
> ? ? ? ?mov ? ? $1, (%eax)
>
> as it is for
>
> ? ? ? ?add ? ? $1, (%eax)
>
> yet in one case the assembler *guesses* what the programmer
> meant whereas in the other case it errors out.
>

AT&T assembly defaults to 32bit.  If there is no ambiguity in
operation, gas won't complain.

-- 
H.J.


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