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

ARM Linker Address Map

Note: This was originally posted on 22nd November 2009 at http://forums.arm.com

Hi All,

Im new to this forum and pretty new to ARM development.
When Im compiling my SW in THumb mode the symbol names
in .map file shows Unaligned memory addresses(Eg: 0x225571).
But the symbol is actually placed in address aligned address(0x225570).
Can anybody explain why linker map shows unaligned address?

Thanks
Parents
  • Note: This was originally posted on 22nd November 2009 at http://forums.arm.com

    The least significant bit of the address is used by some ARM/Thumb instructions to determine the instruction set to use, e.g.

    [font="Lucida Console"]MOV r0,#0x21
    BX  r0[/font]

    Branches to address 0x20, and switches to Thumb state, whilst:

    [font="Lucida Console"]MOV r0,#0x20
    BX  r0[/font]

    Branches to address 0x20, and switches to ARM state.

    hth
    s.


    I guess the least significant bit of the destination address where the branching occurs represents the mode.
    This could even be a LSB of the Register where destination address is present(BLX Rm).

    My question is more about the starting address of a symbol/function code. Mostly this would be a PUSH instruction with most of the
    compilers. 
    Hope I made my question clear.

    Thanks.
Reply
  • Note: This was originally posted on 22nd November 2009 at http://forums.arm.com

    The least significant bit of the address is used by some ARM/Thumb instructions to determine the instruction set to use, e.g.

    [font="Lucida Console"]MOV r0,#0x21
    BX  r0[/font]

    Branches to address 0x20, and switches to Thumb state, whilst:

    [font="Lucida Console"]MOV r0,#0x20
    BX  r0[/font]

    Branches to address 0x20, and switches to ARM state.

    hth
    s.


    I guess the least significant bit of the destination address where the branching occurs represents the mode.
    This could even be a LSB of the Register where destination address is present(BLX Rm).

    My question is more about the starting address of a symbol/function code. Mostly this would be a PUSH instruction with most of the
    compilers. 
    Hope I made my question clear.

    Thanks.
Children
No data