Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

у меня такая

Отправлено ы 19 мая 2009, г. 20:24
В ответ на: Для ARM тоже имеет смысл свою реализацию сделать отправлено пользователем vitalyn 19 мая 2009, г. 20:13






#define NLWA(a) (((u32_t)(a)) & 3)
#define NWA(a) (((u32_t)(a)) & 1)


#define LD32B(d,p) \
d = *((p) + 3); d <<= 8;\
d |= *((p) + 2); d <<= 8;\
d |= *((p) + 1); d <<= 8;\
d |= *((p) + 0); p += 4

#define LD32W(d,p) \
d = *((p) + 1); d <<= 16;\
d |= *((p) + 0); p += 2





/******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void * sa_memcpy(void *dst,void *src,u32_t sz) {
REG_t u32_t *p32s;
REG_t u32_t *p32d;
REG_t u16_t *p16s;
REG_t u32_t lw ;
REG_t u8_t *p8s = (u8_t*)src;
REG_t u8_t *p8d = (u8_t*)dst;
vu32_t i ;


if ((p8s == NULL) || (p8d == NULL) || !sz) {
return p8d;
}
/////////////////////////
// выравниваем dst //
/////////////////////////
while (NLWA(p8d) && sz) {
sz--;
*p8d++ = *p8s++;
}
/////////////////////////
// копируем по 4 байта //
/////////////////////////
p32d = (u32_t*)p8d;
i = sz >> 2;
sz &= 3;

if (i) {
if (NLWA(p8s)) {
/*** src != %4 ***/
if (NWA(p8s)) {
/*** src != %2 ***/
do { LD32B(lw,p8s);
*p32d++ = lw ;
} while(--i);
} else {
/*** src = %2 ***/
p16s = (u16_t*)p8s;
do { LD32W(lw,p16s);
*p32d++ = lw;
} while(--i);
p8s = (u8_t*)p16s;
}
} else {
/*** src = %4 ***/
p32s = (u32_t*)p8s;
do { *p32d++ = *p32s++;
} while(--i);
p8s = (u8_t*)p32s;
}
}
/////////////////////////
// копируем остаток //
/////////////////////////
p8d = (u8_t*)p32d;
while(sz--) {
*p8d++ = *p8s++;
}
return p8d;
}






Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 97:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru