The latest ARM reference indicates that the 16-bit Thumb instruction
MOVS r1,r2
should be encoded as
LSL r1,r2,#0 // 0011
where gas encodes it as
ADDS r1,r2,#0 // 1C11
These instructions are different, since the latter clears the C (carry) and V
(overflow) flags.
gas also encodes
MOV r1,r2
as
ADDS r1,r2,#0 // 1C11
whereas after ARMv6 this should be encoded as 4611. This ensures none of the
flags are set.
With Thumb2 available, gas encodes
MOVS r1,r8
as
MOV r1,r8 // 4611
whereas this should be encoded as EA5F0108. This ensures the flags are set.
--
Summary: Encoding for the Thumb MOV{S} instruction
Product: binutils
Version: 2.20
Status: NEW
Severity: normal
Priority: P2
Component: gas
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: anthony dot fox at cl dot cam dot ac dot uk
CC: bug-binutils at gnu dot org
GCC host triplet: i386-redhat-linux
GCC target triplet: arm-elf
http://sourceware.org/bugzilla/show_bug.cgi?id=10810
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
bug-binutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-binutils