sab123: (face)
[personal profile] sab123
А почему у нас нет (псевдо-)функции для чтения невыровненной памяти? Или, еще лучше, типа "невыровненный указатель"? Ну, понятно, что на Интеле в нормальной ситуации можно и так читать что попало по любому указателю. Но ради более тупых машин приходится портабельно делать через memcpy() где угодно. А так компилятор бы везде сам прочухал. И мог бы генерить код типа

TYPE result;
if (ptr & ALIGNMASK) {
  memcpy(&result, ptr, sizeof(TYPE));
} else {
  result = *ptr;
}


И это при том, что на ARM, оказывается, уже есть такой тип указателей, __packed *. Гм, пойти что-ли написать темплейт по образцу выше.

Date: 2015-03-18 05:14 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
это ж вроде забота компилятора так развлекаться?
я в студии когда-то удивился что она использует автоматом memcpy_sse если указатель выровнен по 64-м битам, а в макоси 64 вообще нельзя ничего выделить с адресом не кратным 8-ке
я понимаю что это другое, но тривиальная штука же. может вендора проца/компилятора попинать надо? они любят кастомные версии гцц запиливать
Edited Date: 2015-03-18 05:14 pm (UTC)

Date: 2015-03-18 07:09 pm (UTC)
From: [identity profile] sab123.livejournal.com
Ну, это в memcpy. Но тут как бы цель обратная: хочется получить результат в регистре без промежуточного копирования в выровненную память, если это возможно. Поэтому и хочется поддержки от компилятора, типа __packed *. А в форме темплейта я не уверен, будет ли оно работать быстрее, чем просто всегда тупой memcpy. Надо будет попробовать померять.

Date: 2015-03-20 01:26 pm (UTC)
ext_659893: Sapa (Default)
From: [identity profile] sappa.livejournal.com
Напиши в ядре перехват исключения от чтения/записи по невыравненному указателю и программную заглушку реализующую данные чтение/запись. И не надо будет ни мучаться с компиляторами коих тьма, ни накладные расходы нести в виде проверки указателей на выровненность перед каждым обращением по ним.

Date: 2015-03-20 02:48 pm (UTC)
From: [identity profile] sab123.livejournal.com
И получится гораздо медленнее, чем с проверкой. Ну, не говоря уже про что-то писать в ядро.

January 2026

S M T W T F S
     12 3
45 6 7 8 9 10
11 12 13 14 151617
1819202122 23 24
25 262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 27th, 2026 09:47 pm
Powered by Dreamwidth Studios