Цитата(mmor @ Dec 9 2013, 17:14)

микроконтроллер AT90USB128. Среда программирования JAR 4.10. Язык С++.
есть необходимость помножить целое чесло на число с точкой. Задаю тип переменной double - компилятор комплирует программу, и даже результат умножения близок к истинному. Вот только сомнения меня гложут можно ли такую программу в контроллер зашивать? будет ли работать.
...
Стал смотреть дизасемблер, а там какой то сложный итеративный процесс идет.
Может кто нибудь на словах объяснить что контроллер делает при умножении на число с точкой?
У микроконтроллера AT90USB128 (как впрочем и у остальных МК с архитектурой AVR) отсутствует аппаратное умножение с плавающей точкой, а потому такие операции производятся библиотекой эмуляции. Очень медленно и кода тоже много.
Для большинства дел, связанных со шкалированием (умножения целых чисел на постоянный нецелый коэффициент) бывает достаточно заменить float-множитель на целочисленную дробь. Например, вместо умножения на 0.8 умножать на 4, потом делить на 5.
Но если медленное умножение вас не тяготит, то можете смело довериться компилятору - тут он не ошибется, т.к. не сам сочиняет алгоритм, а пользуется библиотечным, который давным давно отлажен.