Цитата(juvf @ Jan 6 2011, 09:19)

вот код
Код
char bufRecive[100];
alt_u16 countRxTx = 0x0025;
*reinterpret_cast<alt_u16*>(&bufRecive[1]) = countRxTx;
после этого bufRecive[0] равно 0х25, а bufRecive[1] равно 0х00. Сталкивался с такой проблемой в msp430 в IAR-e. Там нужно адрес массива bufRecive при объявлении выравнивать дерективой, типа #pragma aligment = 2
В Nios-e похоже тоже из-за выравнивания. Как тут массив выравнять? Или если не выравнивание, то что? Как побороть?
мммм.......
а не проще ли так(?):
Код
bufRecive[1] = ((char*)&countRxTx)[0];
а если таки охота ворочать little/big-endian то енто надо искать в доках на ниос и гцц.
да... и это не выравнивание. это нормальное положение байтов в памяти отведенной под переменную.
как вариант - написать макросы для переворачивания байтовых последовательностей при присваивании.
Сообщение отредактировал shenick - Jan 9 2011, 15:48