This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Re: question on `pushb' for i386
- To: "David O'Brien" <obrien at NUXI dot com>
- Subject: Re: question on `pushb' for i386
- From: Alan Modra <alan at linuxcare dot com dot au>
- Date: Thu, 4 May 2000 10:16:00 +1000 (EST)
- cc: binutils at sourceware dot cygnus dot com
On Wed, 3 May 2000, David O'Brien wrote:
> With 2.9.1 FreeBSD was able to use the 'pushb' memnomic (used for the
> instruction to push a zero-extended byte onto the stack as a full word)
> in .s files. However, using the 0000424 snapshot's GAS I get "{standard
> input}:358: Error: suffix or operands invalid for `push'" for
> "pushb $0x10".
>
> In trying to find why the difference, I cannot even find `pushb' in
> 2.9.1. How was it accepted there? In 0000424 the 'push' instruction
> seems to do the same as 'pushb' automatically. Was the 'pushb'
> instruction removed from GAS?
2.9.4 and above are a _lot_ more fussy about x86 syntax. All the
following silly combinations, and more, are now rejected
pushb %al
setae %eax
ldsb 0,%eax
setnew 0
div %cx,%al
fstb %st,0
xlatw
stil
jaw bone
2.9.1 would quite happily assemble them, ignoring the suffix or wrong
register size; Sometimes this was what the programmer intendend,
sometimes it provided an unwelcome surprise.
Please fix your sources. pushb has been banished. If you like, I can
expound on the reasons at length via private email.
Regards, Alan Modra
--
Linuxcare. Support for the Revolution.