[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: assemby code msp430
From: |
Nick Clifton |
Subject: |
Re: assemby code msp430 |
Date: |
Tue, 12 Apr 2005 09:50:03 +0100 |
User-agent: |
Mozilla Thunderbird 1.0 (X11/20041206) |
Hi Aditya,
i am using the msp430-as assembler with -mmcu=msp430x147. the above
controller has a code address space from 0x8000. but whenever i
include ".org 0x8000" at the beginning of the code and follow it with
a mov command like mov #0x5A80,0x0120, i get the output "operand out
of range: 32784 (or a similar number)"
I asked Dmitry, the MSP430 maintainer about this. He said:
: The actual asm message will be 'region text is full' cause .org
: directive will (as I understand) shift a PC by 0x8000 bytes forward
: from the current location. The linker script defines ROM_START at
: 0x8000, therefore first instruction will be placed at address 0x8000 +
: 0x8000 == 65536 which is out of range.
:
: The assembler instruction mov #0x5A80,0x0120 will not produce any
: error message unless some of operands over 16 bits value. If they are,
: the error message will suggest how to fix this problem. Objdump
: output will indicate that mov instruction uses PC relative addressing
: mode and will show an actual address of the destination operand.
:
: I probably know where these question come from: some commercial tools
: treat '.org' directive as an absolute shift within a whole memory
: range. Thus, some people think that there is a bug, then think to read
: documentation :)
I hope that this helps. Basically, I think that Dmitry is saying that
you do not need the ".org 0x8000" directive as this is already handled
by the linker script.
Cheers
Nick