Перенос предложения: голоса +1, -6
Автор идеи:Vyacheslav Meshkov
Ввод типов: машинное слово - mword_t (знаковое) и беззнаковое машинное слово umword_t, имеющее максимальную производительность и максимально возможной разрядности для данный архитектуры. Например пишем цикл, и впоследствии не задумываемся о производительности и корректности при переносе кода x32 -> x64 или вообще на другую архитектуру.
Давно были введены типы указывающие разрядность: 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, и мигрируем с платформы на платформу.
Перенос предложения: голоса +1, -6 Автор идеи: Vyacheslav Meshkov
Ввод типов: машинное слово - mword_t (знаковое) и беззнаковое машинное слово umword_t, имеющее максимальную производительность и максимально возможной разрядности для данный архитектуры. Например пишем цикл, и впоследствии не задумываемся о производительности и корректности при переносе кода x32 -> x64 или вообще на другую архитектуру.
Давно были введены типы указывающие разрядность: 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, и мигрируем с платформы на платформу.