Читайте также:
|
|
Компилятор поддерживает обычные для С/С++ простые типы данных (табл.1), однако их реализация в объектном коде выполняется с учетом архитектуры процессоры, т.е. 32-разрядных регистров. Компилятор не поддерживает типы данных меньшие, чем адресуемая ячейка памяти процессора. Хотя это приводит к необычной эквивалентности размерности переменных типа short int, int, long int и char (все по 32 бита), но не противоречит стандарту ISO/IEC.
Таблица 1
Тип | Размер в битах | Результат, возвращаемый оператором sizeof |
int | 32 (ФЗ знаковый) | |
unsigned int | 32 (ФЗ беззнаковый) | |
long | 32 (ФЗ знаковый) | |
unsigned long | 32 (ФЗ беззнаковый) | |
char | 32 (ФЗ знаковый) | |
unsigned char | 32 (ФЗ беззнаковый) | |
short | 32 (ФЗ знаковый) | |
unsigned short | 32 (ФЗ беззнаковый) | |
pointer | ||
float | 32 (ПЗ) | |
double | 32 или 64 (ПЗ) | 1 или 2 (по умолчанию 1) |
long double | 64 (ПЗ) | |
fract | 32 (в С++ - ФЗ дробный знаковый, в С – эмуляция через ПЗ) |
Несколько слов следует сказать особо о представлении дробных операндов и операндов в формате с плавающей запятой (ПЗ). Тип данных float представляет собой 32-битовое значение в формате IEEE-1985. Тип double может быть либо 32-х, либо 64-битовым. Обработка 64-битовых ПЗ-данных выполняется с использованием программной эмуляции ПЗ-арифметики, что приводит к существенному снижению производительности вычислений. Поэтому более предпочтительным является использование данных в формате float или 32-битовых double, поскольку в этом случае обработка ведется в "родном" для ADSP формате.
Для обработки дробных данных в поддерживаемом компиляторе языка С++ типе fract (32-битовые ФЗ-числа в диапазоне [-1…1) должен быть подключен соответствующий класс путем использования заголовочного файла <fract>. Чтобы компилятор мог отличить константу в дробном ФЗ-формате от ПЗ-константы, она должна иметь суффикс "r", например 0.5r. При этом поддерживаются операции преобразования типов между дробным и целыми типами и между дробным и ПЗ-типами, а также стандартный набор арифметических операций: сложение, вычитание, умножение, сдвиги, сравнения.
34. Расширения языка С. Ассемблерные вставки – использование регистров. Поддержка пространств памяти данных памяти команд. Доступ к круговым буферам.
2.3. Расширения языка С/С++
Компилятор cc21k поддерживает ряд расширений стандарта ANSI C++ и языка С. Эти расширения введены как с учетом архитектуры DSP-процессоров, так и для того, чтобы позволить программисту использовать некоторые возможности С++ при программировании на С.
Дата добавления: 2015-11-16; просмотров: 48 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Общие сведения | | | Ассемблерные вставки |