Кто любит RISC в жизни, заходим, не стесняемся.
Чт июн 06, 2019 13:10:21
Мне не понравился вариант с упаковкой указателей в long.
А где вы такое видели? И как это возможно???
Чт июн 06, 2019 13:23:48
jcxz писал(а):А где вы такое видели? И как это возможно???
да вот некто с ником
jcxz недавно в теме написал:
Да очень просто:
- Код:
u64 func()
{
void *ptr1, *ptr2;
...
return (u32)ptr1 | (u64)(u32)ptr2 << 32;
}
вызов:
u64 q = func();
void *ptr_1 = (void *)(u32)q;
void *ptr_2 = (void *)(u32)(q >> 32);
я могу ошибаться, но u64 для платформы ARM эквивалентно long (в 2 раза шире int). разве нет?
Чт июн 06, 2019 14:20:18
ARV, ошибаетесь. long всегда 32 бита. 64 бита - long long или long long int.
Ну, по крайней мере, в стандарте C.
Чт июн 06, 2019 14:57:42
u64 для платформы ARM эквивалентно long (в 2 раза шире int). разве нет?
Это правда только наполовину. Long действительно в 2 раза шире int, но минимальный размер int - 16 бит. Стандарт определяет именно минимум, для long он 32 бита, на том же x64 линуксе long уже 64 бита. Естественно это уже нужен и 64-х битный ARM...
Чт июн 06, 2019 15:00:06
ПростоНуб писал(а):long всегда 32 бита
я не уверен, что вы правы. во всяком случае в стандарте написано "long содержит
минимум 32 бита".
но не это принципиально в моем сообщении - принципиально упаковывание двух значений в одно удвоенного размера "вручную".
Чт июн 06, 2019 15:10:56
я могу ошибаться, но u64 для платформы ARM эквивалентно long (в 2 раза шире int). разве нет?
Нет.
typedef unsigned long long u64;
Чт июн 06, 2019 15:16:23
да уже выяснили - сколько можно?
Чт июн 06, 2019 15:30:52
ARV, специально полез в стандарт. Да я не прав. Там есть рекомендация, но нет жёсткого ограничения. У MS long всегда 32 бита. На Linux может быть и 32, и 64, в зависимости от платформы. В любом случае, упаковка одного целого в другой, а тем более указателя, должна сопровождаться проверками sizeof, или можно нарваться на неприятности. И уж точно я согласен с тем, что такой упаковки следует избегать. Пользуйтесь union, если приспичило.
Чт июн 06, 2019 15:35:46
ПростоНуб писал(а):И уж точно я согласен с тем, что такой упаковки следует избегать.
ну хоть раз с моими возражениями согласился человек, считающий себя профессионалом
просто бальзам на душу. спасибо.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.