ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1000448 Топик полностью
fk0, легенда (30.04.2020 18:26, просмотров: 280) ответил VLLV на 1. С какого перепуга, если ядро не читает 8 байт за раз, а только 4 байта? 2. Не очень понятен процесс компиляции, в одном файле с этим типом нет массива структур, в другом есть массив структур - как они договариваются?
А какая связь вообще с байтами? Ты знаешь как оно внутри работает? Может найтись масса неочевидных причин, почему иметь "некруглые" адреса сложно. Пусть и читает по 4 байта за раз, но чтоб по 4 байта считать длинное значение, long long, long double, вектор, и обработать его последоательно нужно уметь вычитывать его отдельные части. И куда проще это делать с выравненного адреса -- потому, что достаточно правильным образом замаскировать младшие биты адреса, а с 

невыравненного -- нужен полноценный сумматор. Никак никто не договаривается, всё работает как SciFi сказал -- структуры всегда выровнены на какую-то величину определяемую хранимыми в структуре типами данных. Работа с невыравненными структурами -- эцих с гвоздями. Да компилятор тоже балуется маскировкой битиков вместо честного сложения адресов. И да, переменные на стеке тоже выравнены должны быть (именно там и балуется), и кадр стека должен быть выравнен (для каждой функции). И если, например, там выравнивание слетает то очень весело может быть, потому, что оно даже продолжает работать, а потом падает где-то в глубине недр библиотек, ибо функция использующая векторную инструкцию натыкается на невыравненный адрес.

[ZX]