Herz 5 21 июня, 2010 Опубликовано 21 июня, 2010 · Жалоба Ясно, спасибо. Но вроде как и int8_t, и uint8_t гарантированно имеют размерность в 8 бит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 21 июня, 2010 Опубликовано 21 июня, 2010 · Жалоба и какие проблемы ? Все зависит как вы опишете Bit Banding, так вы его и портируете. Использовать 8-битный тип для флагов это двойной геморой, первое это расход памяти, второе это компилятор всегда расширяет 8 бит до 32 бит, а это для кортекса 1 лишняя команда. А можно по подробнее, КАК он расширяет? ( я пользуюсь Кейлом uVision 3.85) Если у меня массив из 100 значений unsigned char ( u8 как в кейловской библиотеке переименовано), ведь не выделяется под них 400 байт? При математических действиях разве эти 8 бит не записываются в младшие разряды 32- битного числа ( АЛУ 32-х битное) ? Я думал что только для знаковых типов преобразование требуется... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romez777 0 22 июня, 2010 Опубликовано 22 июня, 2010 · Жалоба А можно по подробнее, КАК он расширяет? ( я пользуюсь Кейлом uVision 3.85) Если у меня массив из 100 значений unsigned char ( u8 как в кейловской библиотеке переименовано), ведь не выделяется под них 400 байт? Может быть имелось в виду integer promotion? В С99, 6.3.1.1p2: If an int can represent all values of the original type, the value is converted to an int; otherwise, it is converted to an unsigned int. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 22 июня, 2010 Опубликовано 22 июня, 2010 · Жалоба А можно по подробнее, КАК он расширяет? Когда загружается 8 битная переменная в 32 битный регистр, неиспользуемые биты принудительно обнуляются, или если это знаковый 8 бит, тогда заполняются значением знака, тоже самое и с 16 битами Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 22 июня, 2010 Опубликовано 22 июня, 2010 · Жалоба Ясно, спасибо. Но вроде как и int8_t, и uint8_t гарантированно имеют размерность в 8 бит?Да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться