Введение типа "машинное слово". Со знаком и без знака.

Vyacheslav Meshkov
Vyacheslav Meshkov

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

Также есть не менее важная задача. Переменные цикла и просто любая переменная, обеспечивающая максимальную производительность на конкретной архитектуре. Например mword=int16_t на 16 разрядной машине, mword=int32_t на 32 разрядной, и так далее.

К сожалению, в своё время word был занят под 16 бит, когда машинное слово было 16 бит. И именно для 16 битной архитектуры были разумны и понятны dword, qword. Но на современных машинах это технически некорректные типы. Корректнее говорить word=int32_t для x86 и word=int64_t для x64. SIMD это отдельный набор типов. Их разрядность нам не важна.

Очевидно, что int8_t или int16_t на современной x86 архитектуре будут медленными. Также я не хочу переписывать код при переносе с архитектуры на архитектуру, если я не меняю функциональности. Если мы пишем цикл с int64_t, то он будет быстрый на x64, но не на x86, а если int32_t, то наоборот. А так просто пишем mword_t, и мигрируем с платформы на платформу.

-3
рейтинг
1 комментарий
Саша Зайцев

https://en.cppreference.com/w/cpp/types/integer

Вас не устроят fast версии типов?

Саша Зайцев
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения