выравнивание
Mar. 18th, 2015 05:21 amА почему у нас нет (псевдо-)функции для чтения невыровненной памяти? Или, еще лучше, типа "невыровненный указатель"? Ну, понятно, что на Интеле в нормальной ситуации можно и так читать что попало по любому указателю. Но ради более тупых машин приходится портабельно делать через memcpy() где угодно. А так компилятор бы везде сам прочухал. И мог бы генерить код типа
И это при том, что на ARM, оказывается, уже есть такой тип указателей, __packed *. Гм, пойти что-ли написать темплейт по образцу выше.
TYPE result;
if (ptr & ALIGNMASK) {
memcpy(&result, ptr, sizeof(TYPE));
} else {
result = *ptr;
}
И это при том, что на ARM, оказывается, уже есть такой тип указателей, __packed *. Гм, пойти что-ли написать темплейт по образцу выше.