Здравствуйте, Mr.Delphist, Вы писали:
BZ>>>но это же займёт целых два такта! как можно в форуме C++ такое святотатство предлагать... MD>·>Тогда можно переписать как MD>·>data[2] = 255; data[3] = 255; MD>·>чтобы оно распараллелиось. MD>Вы троллите, или в самом деле полагаете, что работу с двумя соседними байтами планировщик отдаст двум ядрам, а затем доблестно будет бороться с рассинхронизацией ядерных кэшей?
Записано же в одну строчку, значит, распараллелится
Re[5]: как записать в массив char элемент размерности short ?
Здравствуйте, Mr.Delphist, Вы писали:
MD>Вы троллите, или в самом деле полагаете, что работу с двумя соседними байтами планировщик отдаст двум ядрам, а затем доблестно будет бороться с рассинхронизацией ядерных кэшей?
Вы троллите, или о каком таком планировщике идёт речь??
Люди, я люблю вас! Будьте бдительны!!!
Re: как записать в массив char элемент размерности short ?
Здравствуйте, HAXT, Вы писали:
HAX>Помогайте коллеги,
HAX>есть массив элементов char
HAX>unsigned char data[255]; (255 по 1 байту каждый)
HAX>нужно начиная с третьего его элемента записать значение unsigned short (2 байта)
HAX>почему-то так не получается HAX>(unsigned short*)(data[2]) = 65535;
HAX>пишет expression must be a modifiable lvalue
HAX>а мне нужно этой операцией перезаписать 2 байта в этом массиве, 2, и 3 по индексу с нуля
Объясни, почему именно элементы по 2му и 3му индексу. Может быть, на самом деле там какая-то структура? Тогда почему бы к ней сразу не привести?
Типа
Здравствуйте, T4r4sB, Вы писали:
TB>Объясни, почему именно элементы по 2му и 3му индексу. Может быть, на самом деле там какая-то структура? Тогда почему бы к ней сразу не привести?
а это потенциальные проблемы с выравниванием. так что лучше такие штуки распрягать сериализацией с явным указанием выравниваний/яйцеконечности
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: как записать в массив char элемент размерности short ?
Здравствуйте, BulatZiganshin, Вы писали:
BZ>а это потенциальные проблемы с выравниванием. так что лучше такие штуки распрягать сериализацией с явным указанием выравниваний/яйцеконечности
Выравнивание прагмапаками делается. Индеец — специальными типами, не int16_t, а int16be.
Re[4]: как записать в массив char элемент размерности short ?
Здравствуйте, T4r4sB, Вы писали:
BZ>>а это потенциальные проблемы с выравниванием. так что лучше такие штуки распрягать сериализацией с явным указанием выравниваний/яйцеконечности
TB>Выравнивание прагмапаками делается. Индеец — специальными типами, не int16_t, а int16be.
вот на мой скромный взгляд — это неправильный подход. хотя хрен его знает почему...
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: как записать в массив char элемент размерности short ?
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, T4r4sB, Вы писали:
BZ>>>а это потенциальные проблемы с выравниванием. так что лучше такие штуки распрягать сериализацией с явным указанием выравниваний/яйцеконечности
TB>>Выравнивание прагмапаками делается. Индеец — специальными типами, не int16_t, а int16be.
BZ>вот на мой скромный взгляд — это неправильный подход. хотя хрен его знает почему...
Наверное, потому, что архитектуре проца на прагмапаки начихать.
Re[6]: как записать в массив char элемент размерности short ?
Здравствуйте, Mr.Delphist, Вы писали:
MD>Наверное, потому, что архитектуре проца на прагмапаки начихать.
Ну если проц кидает исключение при невыровненном доступе, и при этом надо работать с поганым форматом, в котором нет выравнивания, то придётся действовать другими методами, каждое поле восстанавливая побайтово.
Re: как записать в массив char элемент размерности short ?