toweroff 0 27 марта, 2014 Опубликовано 27 марта, 2014 · Жалоба Добрый день Код генерится явно как big endian На вкладке Target чекбокс big endian серый, выключен Скормил компилятору директиву --li, все равно то же самое, т.е. если unsigned char b[4]; *((unsigned int*)b) = 0x12345678; то получится b[0] = 0x78 b[1] = 0x56 b[2] = 0x43 b[3] = 0x12 Ну и вопрос - куда копнуть, что сказать компилятору? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 27 марта, 2014 Опубликовано 27 марта, 2014 · Жалоба unsigned char b[4]; *((unsigned int*)b) = 0x12345678; то получится b[0] = 0x78 b[1] = 0x56 b[2] = 0x43 b[3] = 0x12 Это и есть Little Endian. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 27 марта, 2014 Опубликовано 27 марта, 2014 · Жалоба Это и есть Little Endian. мда.. перепутал лучше было скопипастить нужно наоборот, и, тогда, только в конкретном случае. Такое возможно? #pragma be не работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 27 марта, 2014 Опубликовано 27 марта, 2014 · Жалоба нужно наоборот, и, тогда, только в конкретном случае. Такое возможно? Ну, руками собрать - не годится? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 27 марта, 2014 Опубликовано 27 марта, 2014 · Жалоба #include <arpa/inet.h> unsigned char b[4]; *((unsigned int*)b) = htonl(0x12345678); И ntohl() для обратного преобразования. Не годится? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 27 марта, 2014 Опубликовано 27 марта, 2014 · Жалоба На вкладке Target чекбокс big endian серый, выключен Это просто так называемый foolproof. Даже если компилятору приказать делать вид, что кругом big endian, результаты работы АЛУ, например, вас совсем не устроят. Данный процессор поддерживает big endian исключительно в DMA и LCD. ПО вполне понятным причинам. Разные бывают внешние устройства... Заточенные на big endian, например... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 27 марта, 2014 Опубликовано 27 марта, 2014 · Жалоба Ну, руками собрать - не годится? почему? пока работает такая конструкция #define SWAP16(x) ((U16)(((x)>>8) | ((x)<<8))) мне нужны 16-разрядные числа И ntohl() для обратного преобразования. Не годится? спасибо, не знал про них Это просто так называемый foolproof. Даже если компилятору приказать делать вид, что кругом big endian, результаты работы АЛУ, например, вас совсем не устроят. Данный процессор поддерживает big endian исключительно в DMA и LCD. ПО вполне понятным причинам. Разные бывают внешние устройства... Заточенные на big endian, например... ну вот теперь совсем все на своих местах :) всем спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться