Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARMCC и little endian
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
toweroff
Добрый день

Код генерится явно как 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


Ну и вопрос - куда копнуть, что сказать компилятору? sm.gif
aaarrr
Цитата(toweroff @ Mar 27 2014, 15:05) *
Код
unsigned char b[4];

  *((unsigned int*)b) = 0x12345678;

то получится
Код
b[0] = 0x78
b[1] = 0x56
b[2] = 0x43
b[3] = 0x12

Это и есть Little Endian.
toweroff
Цитата(aaarrr @ Mar 27 2014, 15:33) *
Это и есть Little Endian.

мда.. перепутал
лучше было скопипастить biggrin.gif
нужно наоборот, и, тогда, только в конкретном случае. Такое возможно?
#pragma be
не работает
aaarrr
Цитата(toweroff @ Mar 27 2014, 16:57) *
нужно наоборот, и, тогда, только в конкретном случае. Такое возможно?

Ну, руками собрать - не годится?
Сергей Борщ
Код
#include <arpa/inet.h>

unsigned char b[4];

  *((unsigned int*)b) = htonl(0x12345678);

И ntohl() для обратного преобразования. Не годится?
DpInRock
Цитата
На вкладке Target чекбокс big endian серый, выключен

Это просто так называемый foolproof.
Даже если компилятору приказать делать вид, что кругом big endian, результаты работы АЛУ, например, вас совсем не устроят.

Данный процессор поддерживает big endian исключительно в DMA и LCD. ПО вполне понятным причинам. Разные бывают внешние устройства... Заточенные на big endian, например...
toweroff
Цитата(aaarrr @ Mar 27 2014, 17:48) *
Ну, руками собрать - не годится?

почему? пока работает такая конструкция
Код
#define SWAP16(x)    ((U16)(((x)>>8) | ((x)<<8)))

мне нужны 16-разрядные числа

Цитата(Сергей Борщ @ Mar 27 2014, 17:48) *
И ntohl() для обратного преобразования. Не годится?

спасибо, не знал про них

Цитата(DpInRock @ Mar 27 2014, 17:56) *
Это просто так называемый foolproof.
Даже если компилятору приказать делать вид, что кругом big endian, результаты работы АЛУ, например, вас совсем не устроят.

Данный процессор поддерживает big endian исключительно в DMA и LCD. ПО вполне понятным причинам. Разные бывают внешние устройства... Заточенные на big endian, например...

ну вот теперь совсем все на своих местах sm.gif

всем спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.