а вообще через указатель будет читабельнее нежели через юнионы.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Romario 05 июля 2003 г. 22:08
В ответ на: через union или через байтовые указатели. отправлено Romario 05 июля 2003 г. 21:56


// long
// b3 b2 b1 b0
// расположение байт как у Моторолы (у интела по другому!)

#define LONG_B3(p) (*(p + 0))
#define LONG_B2(p) (*(p + 1))
#define LONG_B1(p) (*(p + 2))
#define LONG_B0(p) (*(p + 3))

long a;
uchar b3,b2,b1,b0;
uchar *pByte;

pByte = (uchar *)&a;
LONG_B3(pByte) = b3;
LONG_B2(pByte) = b2;
LONG_B1(pByte) = b1;
LONG_B0(pByte) = b0;

у Адука насколько мне известно другое расположение байт в лонге (в соответствии с интелом)
надо изменить просто макросы LONG_Bx

p.s.Вроде у Адука есть asm команды с относительной адресацией, такчто
оператор LONG_Bx(pByte) = bx; может выродиться в одну asm команду

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru