[quote user="George Mock"]Use the .field directive to put a 16-bit chunk of data (or symbol address) anywhere, and not just on 16-bit boundaries.[/quote]With MSP430 CGT v4.2.3 using .field on a symbol address appears to force 16-bit alignment, using either COFF or ELF. As an example used this assembler code:
[quote] .align 1
LOOKUP_TABLE .field 031h,8
.field CRC_16,16
.field DO_NOP,16
DO_NOP MOV R10, R11
NOP
RET
CRC_16 .word 045AEh
[/quote]The assembler listing file shows that the 2nd .field directive has been aligned to a 16-bit boundary and thus introduced one "padding" byte[quote] 10 .align 1
11 000000 0031 LOOKUP_TABLE .field 031h,8
12 000002 000C! .field CRC_16,16
13 000004 0006! .field DO_NOP,16
14
15 000006 4A0B DO_NOP MOV R10, R11
16 000008 4303 NOP
17 00000a 4130 RET
18
19 00000c 45AE CRC_16 .word 045AEh[/quote]
Not sure is this is a "bug" in the assembler, or a limitation imposed by how symbol relocation is defined in the COFF / ELF format object files.