Перейти к содержанию
    

в чем разница fast uint8_t от uint8_t?

к сожалению, не нашел в инете внятного объяснения.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для чего используют fast?

 

Может регистровая переменная, может в "быстром" сегменте памяти.

А в каком это компиляторе такое ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в IAR точно было

не помню такого (для MSP430). Возможно какойто макрос - надо рыться в инклудах иаровских.

Или какая-то специфика под конкретный таргет - например константы

для контроллера Atmel 8515 должны быть размещены во внутреннем флеш,

а не внешней памяти.

 

ps

 

typedef _INT_FAST8_T_TYPE_ int_fast8_t;

Изменено пользователем k155la3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Действия с int_leastN_t и int_fastN_t типами стандартом отданы на усмотрения компиляторов.

Единственно оговорено, что длина этого типа должна быть не менее N.

А дальше - как решит компилятор.

uint_fast8_t для ARM-ов точно будет располагаться в полном 32-х разрядном слове, но логически будет ограничено 8-ю битами.

А uint_least8_t - как будет удобнее компилятору для данной конкретной архитектуры.

 

А вот работа с uint8_t будет приводить к дополнительным командам, для применения именно 8-и разрядных команд (если они есть).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

уже полез, так

----

uint_fast8_t

typedef unsigned char uint_fast8_t;

typedef unsigned short uint_fast16_t;

typedef unsigned long uint_fast32_t;

typedef unsigned long long uint_fast64_t;

 

The types each specify an unsigned integer type that supports the fastest operations among those whose representation has at least eight, 16, 32, or 64 bits, respectively. Note that the definitions shown here are merely representative.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для чего используют fast?

Для скорости, очевидно!

Основная идея - улучшение переносимости программ между архитектурами с разной разрядностью АЛУ.

Например, на AVR uint_fast8_t будет 8-ми битным, а на Cortex-m уже 32-ух битным.

Его следует использовать, фактически, повсеместно, кроме как в протоколах передачи данных.

Я использую эти типы в счётчиках цикла, в качестве аргументов функции, а также в качестве возвращаемого функцией значения, локальные временные и статические переменные и т.д....

 

Чтобы понять суть, напишите код для Cortex-m, с использованием uint_fast8_t и uint8_t, и посмотрите во что выливается компиляция такого кода:

i++;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для чего используют fast?

Согласно С99:

  • uint_fast8_t - тип данных, который содержит не менее 8 бит и операции с которым являются самыми быстрыми на данной платформе
  • uint_least8_t - самый маленький тип данных для данной платформы, который содержит не менее 8 бит
  • uint8_t - тип данных, который содержит ровно 8 бит, однако имеет место специфика работы с платформой - если разрядность не позволяет, то такого типа для данной платформы существовать не должно (в отличие от двух вышеперечисленных)

Хороший пример приведён в ответе тут и в сообщениях форумчан.

Использование таких типов с фиксироваными размерами(uint8_t, int32_t etc.) является предпочтительным относительно типов unsigned char, unsigned int etc. - это указано многими правилами кодирования (MISRA C, например). Посмотреть как те или иные типы фиксированого размера соотносятся с типами данных plain C для конктретной платформы можно посмотреть в заголовке <stdint.h>.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...