Размер символов char, short, int, long и т. Д. Зависит от платформы.32-битные архитектуры, как правило, имеют char = 8, short = 16, int = 32, long = 32.В 64-битных архитектурах обычно есть char = 8, short = 16, int = 32, long = 64.
Многие DSP не имеют мощности двух типов.Например, Motorola DSP56k (немного устаревший) имеет 24-битные слова.Компилятор для этой архитектуры (из Tasking) имеет char = 8, short = 16, int = 24, long = 48.Чтобы запутать, они сделали выравнивание char = 24, short = 24, int = 24, long = 48.Это потому, что он не имеет байтовой адресации: минимальная доступная единица измерения составляет 24 бита.Это имеет захватывающее (раздражающее) свойство, включающее много деления / по модулю 3, когда вам действительно необходим доступ к 8-битному байту в массиве упакованных данных.
Вы найдете только не-мощные-2 в ядрах специального назначения, размер которых подбирается в соответствии со специальным шаблоном использования, с преимуществом в отношении производительности и / или мощности.В случае 56k это было связано с тем, что был модуль с множественным сложением, который мог загружать две 24-битные величины и добавлять их к 48-битному результату за один цикл на 3 шинах одновременно.Вся платформа была разработана вокруг него.
Основная причина, по которой большинство архитектур общего назначения использует полномочия 2, состоит в том, что они стандартизируют октет (8-битные байты) как тип минимального размера (кроме флагов).Нет причины, по которой он не мог бы быть 9-битным, и, как указано в другом месте, 24-битные и 36-битные были распространены.Это проникло бы в остальную часть дизайна: если бы x86 был 9-разрядным байтом, у нас было бы 36 строк октетного кэша, 4608 страниц октетов, и 569 КБ было бы достаточно для всех :) У нас, вероятно, не было бы «клевов», так какВы не можете разделить 9-битный байт пополам.
Это сейчас практически невозможно.Очень хорошо, что система, сконструированная таким образом с самого начала, но взаимодействие с данными, генерируемыми 8-битными байтовыми системами, было бы кошмаром.Уже достаточно сложно проанализировать 8-битные данные в 24-битном DSP.