Кто и зачем придумал алигн?
От: Sm0ke Россия ksi
Дата: 15.01.23 20:11
Оценка: -1 :))) :)))
Этож издевательство над программистом =\
Re: Кто и зачем придумал алигн?
От: koenjihyakkei Россия  
Дата: 15.01.23 20:27
Оценка: +1
Здравствуйте, Sm0ke, Вы писали:

Его не придумывали он сам пришел. Попробуйте придумать архитектуру процессора с бесплатным и атомарным доступом к невыровненной памяти.
Re[2]: Кто и зачем придумал алигн?
От: wl. Россия  
Дата: 15.01.23 20:42
Оценка:
Здравствуйте, koenjihyakkei, Вы писали:

K>Здравствуйте, Sm0ke, Вы писали:


K>Его не придумывали он сам пришел. Попробуйте придумать архитектуру процессора с бесплатным и атомарным доступом к невыровненной памяти.


помнится, программировал под какой-то мерзкий проц, mips чтоли, так там попытка привести поток байтов в int, типа int x = *(int*)(bytes+n) просто крашило программу на невыровненной памяти. Пришлось двигать байты
Re: Кто и зачем придумал алигн?
От: Wawan Россия http://www.wawan.ru/resume
Дата: 15.01.23 20:52
Оценка: :))) :))
говорят что на параолимпиаде по программированию нет алигнов
Re: Кто и зачем придумал алигн?
От: pagid_ Россия  
Дата: 15.01.23 21:36
Оценка:
Здравствуйте, Sm0ke, Вы писали:

S>Этож издевательство над программистом =\

Создатели процессоров
Re[3]: Кто и зачем придумал алигн?
От: пффф  
Дата: 15.01.23 21:44
Оценка:
Здравствуйте, wl., Вы писали:

K>>Его не придумывали он сам пришел. Попробуйте придумать архитектуру процессора с бесплатным и атомарным доступом к невыровненной памяти.


wl.>помнится, программировал под какой-то мерзкий проц, mips чтоли, так там попытка привести поток байтов в int, типа int x = *(int*)(bytes+n) просто крашило программу на невыровненной памяти. Пришлось двигать байты


Я хз как сишечка, думаю, аналогично, но вообще C++ такое запрещает. Это UB. Надо нужную область копировать в заранее объявленный int, и вот уже после этого с ним можно работать
Re: Кто и зачем придумал алигн?
От: Pzz Россия https://github.com/alexpevzner
Дата: 15.01.23 22:06
Оценка: +2 :)
Здравствуйте, Sm0ke, Вы писали:

S>Этож издевательство над программистом =\


Да Си — это вообще сплошное издевательство над программистом. А C++ добавляет к этому жестокое, негуманное обращение с животными и преступления против человечности.
Re: Кто и зачем придумал алигн?
От: LaptevVV Россия  
Дата: 16.01.23 04:40
Оценка:
В начале были байты.
И байты были в IBM.
Очень рекомендую почитать книжку Чарльза Петцольда "Код".
https://www.mann-ivanov-ferber.ru/books/kod-tajnyij-yazyik-informatiki/
Там про байты довольно подробно написано...

В советских машинах никаких байтов не было.
Не было и алигна.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Отредактировано 16.01.2023 4:44 LaptevVV . Предыдущая версия .
Re[2]: Кто и зачем придумал алигн?
От: so5team https://stiffstream.com
Дата: 16.01.23 05:40
Оценка: :)
Здравствуйте, Pzz, Вы писали:

Pzz>Да Си — это вообще сплошное издевательство над программистом. А C++ добавляет к этому жестокое, негуманное обращение с животными и преступления против человечности.


Мне всегда казалось, что с помощью C++ вы себе случайно отстрелили палец, отсюда и любовь к этому языку. Но, такое ощущение, что отстрелили вовсе и не палец.
Re[2]: Кто и зачем придумал алигн?
От: pagid_ Россия  
Дата: 16.01.23 07:48
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>В начале были байты.

LVV>И байты были в IBM.
Верно, но не в начале.

LVV>В советских машинах никаких байтов не было.

В начале было слово. Как бы ни банально это не звучало. Причем и в советских машинах, и не в советских.

В качестве исторического примера. У Вирта в первой версии Паскаля для описания строковых переменных есть необязательный модификатор "pack", догадайся для чего. В качестве подсказки первый компилятор Паскаля писали на то ли Барроузе, то ли CDC, на чем-то с не побайтовой, а пословной адресацией.
Это "pack" в книжках по Паскалю упоминали не объясняя, что значит и возможно сами не понимая, чуть ли не до 90-х, когда общепринятым стал борландовский вариант Паскаля.

Cray вроде как был с пословной адресацией, да и все или большинство суперкомпьютеров пока у них была собственная архитектура, а не основанная на параллельной работе огромного множества микропроцессоров с обычными архитектурами.
И сейчас есть 32-разрядные микроконтроллеры с пословной адресацией, 16-разрядные наверно тоже есть.
Re[3]: Кто и зачем придумал алигн?
От: LaptevVV Россия  
Дата: 16.01.23 09:00
Оценка: +1
LVV>>В начале были байты.
LVV>>И байты были в IBM.
_>Верно, но не в начале.
Я имел ввиду, что до появлинея алигна появились байты. Что алигн не просто так с бодуна возник...
LVV>>В советских машинах никаких байтов не было.
_>В начале было слово. Как бы ни банально это не звучало. Причем и в советских машинах, и не в советских.
да, конечно.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Кто и зачем придумал алигн?
От: pagid_ Россия  
Дата: 16.01.23 09:08
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Я имел ввиду, что до появлинея алигна появились байты. Что алигн не просто так с бодуна возник...

Угу, вместе с появлением побайтной адресации и возникла проблема выравнивания.
Re[2]: Кто и зачем придумал алигн?
От: B0FEE664  
Дата: 16.01.23 10:09
Оценка:
Здравствуйте, koenjihyakkei, Вы писали:

K>Попробуйте придумать архитектуру процессора с бесплатным и атомарным доступом к невыровненной памяти.


Я мало понимаю в архитектурах процессоров. Можете объяснить на пальцах в чём проблема быстрого побайтового доступа и почему атомарность важнее выравнивания? (Или атоматность не является альтернативой выравнивания?)
И каждый день — без права на ошибку...
Re: Кто и зачем придумал алигн?
От: Mr.Delphist  
Дата: 16.01.23 11:04
Оценка:
Здравствуйте, Sm0ke, Вы писали:

S>Этож издевательство над программистом =\


В теории, между теорией и практикой разницы нет. На практике, она есть.

Так и с компьютерами. В теории, мы работаем с некоторым идеальным вычислителем. На практике, вылезают те или иные компромиссы реализации, которые могут дать по голове, наступить на ногу или просто громко на Вас чихнуть при всём честном народе.

Почему ячейкам памяти требуется выравнивание?
Почему кэш не работает с индивидуальными байтами?
Почему на CR-ROM можно записать файл, который оттуда не удастся прочитать никогда и никем?
И т.д. и т.п.
Re[2]: Кто и зачем придумал алигн?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.01.23 10:21
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>В советских машинах никаких байтов не было.


Там был отдельный геморрой со сборкой/разборкой слов.
Re[3]: Кто и зачем придумал алигн?
От: LaptevVV Россия  
Дата: 17.01.23 10:31
Оценка:
LVV>>В советских машинах никаких байтов не было.
ЕМ>Там был отдельный геморрой со сборкой/разборкой слов.
Да. Возможно, и поэтому тоже размер слова в БЭСМ-6 был 48 бит.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Кто и зачем придумал алигн?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.01.23 10:34
Оценка: 14 (2)
Здравствуйте, B0FEE664, Вы писали:

BFE>в чём проблема быстрого побайтового доступа


Доступ к памяти выполняется циклами — подготовка операции, собственно операция, завершение операции. Один цикл может быть выполнен только в пределах разрядности магистрали (машинного слова — нынче это 64 бита, 8 байтов). Прочитать/записать один или несколько байтов за один цикл можно только в пределах одного слова. Для операций с байтами, находящимися в разных словах, нужно выполнять разные циклы.

BFE>и почему атомарность важнее выравнивания?


Без атомарности невозможна многопроцессорная работа, а выравнивание создает проблемы лишь тем программистам, которые неудачно выбрали язык. В языках, не требующих связи с низким уровнем, программисту вообще не видны эти особенности.
Re[4]: Кто и зачем придумал алигн?
От: pagid_ Россия  
Дата: 17.01.23 10:40
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Да. Возможно, и поэтому тоже размер слова в БЭСМ-6 был 48 бит.

Размер слова в БЭСМ-6 был 48 бит был потому как числа с плавающей запятой в 48 бит вполне достаточно для большинства расчетных звдач.
Re[5]: Кто и зачем придумал алигн?
От: LaptevVV Россия  
Дата: 17.01.23 10:49
Оценка:
LVV>>Да. Возможно, и поэтому тоже размер слова в БЭСМ-6 был 48 бит.
_>Размер слова в БЭСМ-6 был 48 бит был потому как числа с плавающей запятой в 48 бит вполне достаточно для большинства расчетных звдач.
И поэтому ТОЖЕ...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Кто и зачем придумал алигн?
От: pagid_ Россия  
Дата: 17.01.23 10:58
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>И поэтому ТОЖЕ...

А второе это удачно впихнуть в слово команду ЦП с задуманными методами адресации и предполагаемыми объемами памяти. Там же наверно команда была размером в слово?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.