Size: a a a

Ассемблер

2021 June 30

DC

Dmitry Croft in Ассемблер
Просто написано выравнивать по такому вот правилу и все выравнивают (адрес должен быть кратен размеру данных)
источник

A

Aleksandr in Ассемблер
Потому что при невыравненных адресах требуется два обращения к памяти
источник

DC

Dmitry Croft in Ассемблер
Это я тоже читал. Но я не понимаю почему нельзя было сделать процессор который это за раз делал бы с любыми адресами
источник

DC

Dmitry Croft in Ассемблер
Взял и прочитал байт с любого места
источник

A

Aleksandr in Ассемблер
Можно, но не нужно. Так проще
источник

Y

YVEF in Ассемблер
Возможно интеловский мануал поможет
источник

DC

Dmitry Croft in Ассемблер
А что мне нужно почитать и посмотреть чтобы я тоже мог свободно сказать "так проще"?

Ты, получается, разбираешься как это работает на hardware уровне и почему это проще?
источник

DC

Dmitry Croft in Ассемблер
Возможно. Я просто уже много чего гуглил и тыкал, но так и не найду то, что откроет мне глаза
источник

DC

Dmitry Croft in Ассемблер
Поэтому и спрашиваю и тут, может кто-то разбирался в этой теме
источник

A

Aleksandr in Ассемблер
Чем меньше сущностей - тем проще. А дополнительные режимы физической адресации памяти никому в пользу не пойдут
источник

АШ

Алексей Шведов... in Ассемблер
Не байт, а X байт (в зависимости от размера данных, и размера кэшлайна)
И читаешь ты в реале кусок из кэшлайна. При выравнивании - данные попадают в один кэшлайн, и в следующий раз если ты попытаешься его прочитать - то он прочтёт из кэшлайна уже по выравненному диапазону, что будет намного быстрее. Выше поверхностно это уже и было описано
источник

DC

Dmitry Croft in Ассемблер
Грубо говоря, выравнивание нужно из-за особенностей работы кеша?
источник

АШ

Алексей Шведов... in Ассемблер
Вот пример - массив 512 байт. Выравниваем его по кэшлайну (32, к примеру), и уверены, что данные 32, 33, 34.. - попадут в один кэшлайн
источник

DC

Dmitry Croft in Ассемблер
Кажется, это то что нужно. Урааа ты гений
источник

DC

Dmitry Croft in Ассемблер
Чуть позже покурю это и вернусь с вопросами, но теперь я понял что надо в кеши углубиться
источник

АШ

Алексей Шведов... in Ассемблер
И это уже есть в гугле - пока формулировал ответ уже нашел это
источник

DC

Dmitry Croft in Ассемблер
Мне кажется я это тоже видел, но из-за того что не разбираюсь не понял что тут есть что-то полезное
источник

DC

Dmitry Croft in Ассемблер
Спасибо
источник

DC

Dmitry Croft in Ассемблер
Я подумал что ты какой-то недовольный аля "щас докопаюсь". Но ты мне, кажется, помог продвинуться дальше, спасибо
источник

АШ

Алексей Шведов... in Ассемблер
Просто я изначально вопроса не понял - думал, что ты хочешь узнать, как процессор ищет запрашиваемые данные. Пожалуйста
источник