Повторю, скрипт съел. Народ делает это примерно так (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено SM 28 января 2005 г. 14:28
В ответ на: Это понятно. (+) отправлено Evgeny_CD 28 января 2005 г. 13:05

конкретный пример - ETSI и IEEE c их исходниками, прилагающимися к стндартам. В их исходниках применяют функции типа L_mult, L_mac. А в компилере поставляют инклудник, в котором они мапятся на эффективные для данного проца семейства. Вот вырезка из такого (инклудник называется gsm.h и идет в стандартной поставке к code generation tools):


/*--------------------------------------------------------------------------*/
/* Mappings for ETSI functions to built-in compiler intrinsics */
/*--------------------------------------------------------------------------*/
#define L_add(a,b) (_lsadd((a),(b)))
#define L_sub(a,b) (_lssub((a),(b)))
#define L_negate(a) (_lsneg(a))
#define L_deposit_h(a) ((long)a<<16)
#define L_deposit_l(a) ((long)a)
#define L_abs(a) (_labss((a)))
#define L_mult(a,b) (_lsmpy((a),(b)))
#define L_mac(a,b,c) (_smac((a),(b),(c)))
#define L_macNs(a,b,c) (L_add_c((a),L_mult((b),(c))))
#define L_msu(a,b,c) (_smas((a),(b),(c)))
#define L_msuNs(a,b,c) (L_sub_c((a),L_mult((b),(c))))
#define L_shl(a,b) (_lsshl((a),(b)))
#define L_shr(a,b) (_lshrs((a),(b)))
#define L_shr_r(a,b) (L_crshft_r((a),(b)))
#define L_shift_r(a,b) (L_shr_r(a,-(b)))

#define abs_s(a) (_abss((a)))
#define add(a,b) (_sadd((a),(b)))
#define sub(a,b) (_ssub((a),(b)))
#define extract_h(a) ((unsigned)((a)>>16))
#define extract_l(a) ((int)a)
#define round(a) (short)(_rnd(a)>>16)
#define mac_r(a,b,c) ((short)(_smacr((a),(b),(c))>>16))
#define msu_r(a,b,c) ((short)(_smasr((a),(b),(c))>>16))
#define mult_r(a,b) ((short)(_smpyr((a),(b))>>16))
#define mult(a,b) (_smpy((a),(b)))
#define norm_l(a) (_lnorm(a))
#define norm_s(a) (_norm(a))
#define negate(a) (_sneg(a))
#define shl(a,b) (_sshl((a),(b)))
#define shr(a,b) (_shrs((a),(b)))
#define shr_r(a,b) (crshft_r((a),(b)))
#define shift_r(a,b) (shr_r(a,-(b)))
#define div_s(a,b) (divs(a,b))



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

Ответы



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

E-mail: info@telesys.ru