further behavioral issues with ARM assembler
Richard Earnshaw
rearnsha@arm.com
Tue Apr 9 14:15:00 GMT 2013
On 08/04/13 16:05, Jan Beulich wrote:
> All,
>
> alongside the fixes I sent during the day, I've also got questions on
> whether to other aspects are intentional or bugs:
>
> The first is the fact that ".arch all" doesn't work. The code specifically
> suppresses this, but it doesn't become clear why. Obviously it would
> be nice to have a way to return to this command line specifiable
> mode via some directive.
>
It's tricky because of the potential interaction with the attributes
marking on object files. The whole code in this area could do with an
overhaul; I'm not sure that tinkering at the edges is going to solve the
problems. Part of the problem is that we've got overlapping
incompatible extensions in the co-processor instruction space.
> Further there are several instructions where the specification says
> PC-relative addresses are okay, yet the assembler rejects them. A
> likely incomplete list is
>
Re-ordering your list slightly.
> ldrd r0, r1, [r15, r2]
> ldrh r0, [r15, r0]
> strd r0, r1, [r15, r2]
> strh r0, [r15, r0]
On first inspection, these appear to be errors in GAS.
> smlad r0, r0, r0, r15
SMLAD with Ra=15 isn't permitted, if you read the pseudo code carefully,
you'll see that if Ra = 15, then the instruction encodes SMUAD.
> smmla r0, r0, r0, r15
Similarly this encodes SMMUL.
> vld1.8 {d0}, [r15]
Section A7.7.1 "Advanced SIMD addressing mode" bans Rn=15 for all simd
addresses.
R.
>
> Is this discrepancy intentional?
>
> Thanks, Jan
>
>
>
More information about the Binutils
mailing list