Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
14 years ago

NIOS gcc alignment control

Hello,

The bellow given code on NIOS results to var=0x0201, but it shoud result in var=0x0302. I have tried various combinations with __attribute__ ((align(1)), but with no success. Can I somehow set NIOS gcc compiler to produce byte aligned data access?

unsigned[/B][/B] char[/B][/B] mmm[3]={0x01,0x02,0x03};

unsigned[/B][/B] short[/B][/B] var;

int[/B][/B] main()

{

var=*((unsigned[/B][/B] short[/B][/B]*)(mmm+1));

}

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The Nios requires aligned data. If you want to store a 16 bit or 32 bit value at an odd address, you'll need to handle it manually, byte-by-byte, for both reads & writes. Writing your code without any underlying alignment assumptions will make it much more portable.