------- Additional Comments From bastian dot schick at sciopta dot com  
2009-04-09 15:20 -------
(In reply to comment #2)

Hi Nick

>   This is not a bug.  The assembler is quite reasonably translating the
> requested operation (move low register to low register whilst setting the 
> status
> bits) into a machine instruction that will perform the operation.  The fact 
> that
> it needs to use an ADDS opcode instead of a MOVS opcode is a technical issue,
> not a cause for the assembler to generate an error.

Maybe I was not clear enough. The second opcode is correct, as you describe.
But the "mov r1,r0" is incorrect for ARMv4T,ARMv5T machines.
Check ARM ARM A7.1.44 :
"  If H1==0 and H2==0 in the encoding, the instruction specifies a 
non-flag-setting 
copy move from one low register to another low register. This instruction 
cannot be 
written using the MOV syntax, because MOV <Rd>, <Rm> generates a flag-setting 
copy. However, you can write it using the CPY mnemonic, see CPY on page A7-41.
Note
  Prior to ARMv6, specifying a low register for <Rd> and <Rm> (H1 == 0 and H2 
== 0), the result is UNPREDICTABLE."

Since the CPU selected (XScale) is ARMv5TE, I still thing it is a bug.


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|INVALID                     |


http://sourceware.org/bugzilla/show_bug.cgi?id=9856

------- 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
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to