This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Immediate offset problem with the LDR commands

Compiler give error message for following codes.
A1174E: "Data transfer offset 0x00000102 out of range. Permitted values are 0x00..0x1F"

    LDR   R1,=USB_BASE
    LDRB  R0,[R1,#USB0_CSRL0] ; Error code is A1174E !!!!

USB_BASE   EQU 0x40050000
USB0_CSRL0 EQU 0x102

But compiler dont give any error if i write this program thats way

USB_BASE   EQU 0x40050000
USB0_CSRL0 EQU 0x102

    LDR   R1,=USB_BASE
    LDRB  R0,[R1,#USB0_CSRL0] ; Error code is A1174E !!!!

What is wrong?

Parents
  • If the offset is limited to 0x00 to 0x1f does depend on a couple of things, doesn't it?

    For example what chip you have, or what mode you are assembling (not compiling) for. Have you maybe seen the limit 0 to 31 somewhere in any instruction set descriptions?

    By the way - when you did decide that the assembler had a bug - did you check what the produced op code result was from your source code?

Reply
  • If the offset is limited to 0x00 to 0x1f does depend on a couple of things, doesn't it?

    For example what chip you have, or what mode you are assembling (not compiling) for. Have you maybe seen the limit 0 to 31 somewhere in any instruction set descriptions?

    By the way - when you did decide that the assembler had a bug - did you check what the produced op code result was from your source code?

Children