Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вместо одной команды - две :(
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
GetSmart
Есть у меня в проекте строчка:
Код
float *val = &AverageAngles[j][i];
if ((*(long *)val & 0x7f800000) != 0x7f800000)
  sum += *val;
Пытаюсь обезопаситься от Nan и бесконечности. Гляжу на систему команд ARM и вижу, что можно одной командой загрузить в регистр число до 8-ми рядом стоящих еденичных бит, сдвинутых на любой сдвиг. Вроде бы число 0x7f800000 как раз подходит под это правило, но компилятор EWARM 4.20 не хочет так делать. Он почему-то только 7 бит может в одной команде загрузить. Вот:
Код
0x00003E78 E3A0B440  MOV          R11, #0x40000000
0x00003E7C E38BB5FE  ORR          R11, R11, #0x3F800000
Кто знает, почему?
vet
одна команда получится, если константа формируется сдвигом байта на чётное число бит.
GetSmart
Точно. Дело в системе команд ARMa.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.