ctpexhih писал(а):Вопрос следующий. что означает фраза "поддержка операций с плавающей запятой"?
Как уже ответили, под этим обычно имеется в виду, что процессор имеет готовые команды для работы с такими числами. У слабых микроконтроллеров (8051, АВРки и т.д.) подобных команд нет в принципе, там даже целочисленное умножение-деление не всегда имеется.
Объясню поподробнее. Если в Си при программировании, например, MSP430 написать:
Код: Выделить всё
float A, B, Result;
A=1.2244;
B=-9.6695;
Result=(A+B)/(A*B);
то все будет ОК. То есть компилятор поймет это все и программу можно зашить в контроллер.
Меня интересует:
1) можно ли такое писать для PIC или 8051?
2) Как вообще понять, поддерживает контроллер такие операции или нет и в чем аппаратное отличие контроллеров с поддержкой таких операций и без?
3) Если контроллер не поддерживает такие операции, а они необходимы, то как обойти это ограничение?
Поддержка операций с плавающей запятой в языках высокого уровня, вообще говоря, не привязана к наличию таковой у процессора. Например, на всех ПК до появления 80486 (а также на 80486SX) плавающая запятая поддерживалась специальной микросхемой -- арифметическим сопроцессором. Очень часто её не было для сокращения стоимости компутера -- и, тем не менее, плавающая запятая благополучно считалась. Дело в том, что все эти операции можно выполнить чисто программно, используя только команды целочисленной арифметики (другое дело, что это намного медленее). Соответствующие подпрограммы должны входить в библиотеку времени выполнения, используемую компилятором. Обычно они имеются, и поэтому, за исключением скорости, программисту, использующему язык высокого уровня (тот же Си), глубоко плевать, выполняются такие операции на уровне "железа" или же с помощью подпрограмм.