https://sourceware.org/bugzilla/show_bug.cgi?id=33142

            Bug ID: 33142
           Summary: CR16 loadx disp14 format broken
           Product: binutils
           Version: 2.46 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: Jomosoto at proton dot me
  Target Milestone: ---

Test case:

test.S
---
loadb [r12]3(r1,r0), r2
loadw [r12]3(r1,r0), r3
loadd [r12]3(r1,r0), (r5,r4)
---

Command: `as test.S`


objdump -D output:

---
Disassembly of section .text:

00000000 <.text>:
   0:   60 86 03 00     loadb   [r12]0x23:m(r1,r0),r6
   4:   f0 86 03 00     loadw   [r12]0x33:m(r1,r0),r15
   8:   c0 86 03 00     loadw   [r12]0x3:m(r1,r0),r12
---

Expected objdump -D ouput:
---
Disassembly of section .text:

00000000 <.text>:
   0:   40 86 23 00     loadb   [r12]0x3:m(r1,r0),r2
   4:   a0 86 33 00     loadw   [r12]0x3:m(r1,r0),r3
   8:   80 86 43 00     loadd   [r12]0x3:m(r1,r0),(r5,r4)
---

It appears like the assembler tries to put reg dest to bits 2:3 instead of
16:19 (no effect at third example because "4" doesn't fit in the two bits)

The disassembler seems to interpret bits 0:3 as reg dest, but the disp is
decoded correctly (but broken in example 1 and 2, because of the wrong
behaviour in the assembly step)

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to