[an error occurred while processing this directive]
|
Просто допустим есть у меня число Х в формате Q15 (0xC000) = -0.5(dec) = -16384 (int в Си) и число Y(Q15) = 0.5 = 0x4000 = 16384
nado z=x*y= -0.25
на асме всё более менее ясно:
SSBX FRCT; врубаем fractional mode
LD *(x),16,A ;
MPYA *(y) ;
STH B,*(z) ;
z= 0xE000; = -0.25 = -8192 int in C что есть правильно!.
Теперь, когда я пробую писать на Си
z=x*y;
во первых компилятор вырубает FRCT (= 0); и дает не верный результат.
как корректно записать на Си умножение а результат скинуть в 16 бит?
E-mail: info@telesys.ru