[LLVMbugs] [Bug 7791] New: Invalid(?) ldr instruction form is disassembled as eor

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Aug 2 06:19:36 PDT 2010


http://llvm.org/bugs/show_bug.cgi?id=7791

           Summary: Invalid(?) ldr instruction form is disassembled as eor
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: sliedes at cc.hut.fi
                CC: llvmbugs at cs.uiuc.edu


(trunk rev 110038)

Opcode

  002a78d4

is disassembled by llvm as

  eoreq  r7, r10, r4, asr r8

However note that bit 7 is always 0 in eor register-shifted-register, so this
is not eor:

  cond 0000 001S nnnn dddd ssss 0tt1 mmmm
                                ^
  0000 0000 0010 1010 0111 1000 1101 0100
                                ^

The opcode seems to be, in fact, ldrdeq (register), and both objdump and
libdisarm disassemble it as 'ldrdeq  r7, [r10], -r4':

  cond 000P U0W0 nnnn tttt (0000) 1101 mmmm

  0000 0000 0010 1010 0111  1000  1101 0100

(I assume the bits in parenthesis mean that's the form assemblers should
output, as I cannot find an explanation in the ARM reference manual.)

However, here P=0 and W=1, and the reference manual says that case is
'UNPREDICTABLE'.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list