[an error occurred while processing this directive] [an error occurred while processing this directive]
Виноват. Немного конструктивизма :-)) (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Mik 01 февраля 2002 г. 15:16
В ответ на: Нафиг макрос оптимизировать? Он же из константы делает константу. (+) отправлено Mik 01 февраля 2002 г. 14:43

Вот пример:

int IntToBCD(int x) // x < 10000
{
int y;
y = x % 10;
x /= 10;
y += ((x % 10) << 4);
x /= 10;
y += ((x % 10) << 8);
x /= 10;
y += (x << 12);
return y;
}

Естественно, это дело лучше соптимизировать на "языке ассемблера" (как говорят буквоеды) на предмет эффективного использования регистров, т.к. Keil использует регистры как полный идиот. Здесь всего 3 деления. Поскольку C166 умеет делить довольно быстро, я не думаю, что способ со сдвигами или вычитаниями будет быстрее.

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

Ответы



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

E-mail: info@telesys.ru