Татарин> Ну, я про то и говорю, что ЯВУ взяли бы на себя такие операции и научились бы приводить индекс суб-словного операнда к адресу слова и индексу в слове. Но они это делать НЕ СТАЛИ.
Татарин> Я почему и упрекаю тебя в бессмысленном актуализме: ты принимаешь далёкие следствия принятых решений (например, конкретный синтаксис ЯВУ) за некое препятствие или фактор при принятия решения. Это бессмысленно целиком и полностью. Я наглядно показываю что БЭСМ-6 на бизнес-задачах тормозила.
Ты упираешься в то что "могли бы".
Татарин> Нет смысла спрашивать, как реализовать код на Паскале, если в той реальности адаптированный Паскаль (или, скорее, Алгол) был бы совсем иным. Но НЕ СТАЛ.
Это можно наглядно посмотреть на эволюции реализации компилятора Паскаля для CDC 6000, ссылку на который я привел.
Как была простая реализация строкообработки с костылем типа alfa,
так она и осталась.
Татарин> Собссно, нет ничего сложного в синтаксисе типа Татарин> alfa* str = "1234567890"; Еще раз - это нет ничего сложного
для олимпиадников.
Средний программист даже не будет париться - сделает через char.
Потому что средний программист подготовлен тем же
техникумом/ПТУ в те времена - это для работы над задачами народохозяйственного значения - т.е. планово-экономических.
Средний программист возьмет книжку типа Семашко Г.Л., Салтыков А.И. 'Программирования на языке Паскаль' - Москва: Наука, 1988
Дается описание широко распространенного языка паскаль. Излагается в основном стандартный паскаль. Учитываются особенности работы на ЭВМ разных типов, более подробные сведения и указания приводятся для машин типа ЕС ЭВМ и БЭСМ-6. Предлагаемая книга не требует от читателя специальной подготовки и имеет целью дать практические навыки, достаточные для самостоятельного составления несложных программ и запуска их на ЭВМ.
// informaticslib.ru
И далее возьмет строкообработку за пример "Программа изменения длины строк текста (пример использования записей с вариантами)"
Дается описание широко распространенного языка паскаль. Излагается в основном стандартный паскаль. Учитываются особенности работы на ЭВМ разных типов, более подробные сведения и указания приводятся для машин типа ЕС ЭВМ и БЭСМ-6. Предлагаемая книга не требует от читателя специальной подготовки и имеет целью дать практические навыки, достаточные для самостоятельного составления несложных программ и запуска их на ЭВМ.
// informaticslib.ru
А там простой array[1..NMAX] of char
C последующими тормозами при выполнении на аккумуляторной архитектуре БЭСМ-6, что я наглядно показал.
Причем в книге есть упоминание типов alfa - прямо в оглавлении книги.
Но никто этого программиста
не учил оптимизации на уровне прикладной программы с учетом архитектуры машины и особенности системы команд,
потому что техникум/ПТУ.
Татарин> ЯВУ - это одновременно и следствие из существующего железа, и изолирующий интерфейс между ним и программистом. Был бы актуален alfa - был бы и полный набор для работы с ним. Паскаль содержит все необходимое для реализации работы с ним.
Но далее этот тип, как появилась адресация байтами, попросту убрали, за ненужностью.
Сам Вирт и убрал.
Татарин> Как бы это сказалось на скорости обработки тогдашних задач? Да примерно никак. Строкообработка не была типовой задачей для БЭСМ-6 или CDC 6000. Поэтому никто и не парился с оптимизацией.
Татарин> Фишка быстродействия БЭСМ-6 была в том, что сейчас было бы принято называть кешем Да, там был кэш, на
8 значений адресов. Т.е. если адрес МОЗУ помечен как находящийся в кэше, то обновляться значение будет в кэше, а обновится в самом МОЗУ на момент выкидывания адреса из кэша.
НО! Как я уже сказал, сам работа с PACKED написана на самом Паскале, а не на ассемблере - и там тоже дофига переменных в реализации функции. Т.е. простая пробежка по переменным - это с учетом задания параметров цикла и других переменных, а в моем простом примере их было 3, плюс реализация самого PACKED - привет работа с ОЗУ. Т.е. тормоза на ровном месте, там, где на архитектуре с регистрами - типа PDP или 360 - можно было бы использовать сами регистры, гораздо более скоростные.
Татарин> Сразу скажу, что я не сторонник именно такого решения: явно именованные регистры имеют большие выгоды, как минимум в плотности кода (сколько бит адресуют обычно РОН? а сколько память?) Вот народ посмотрел и оценил что программы на 360
по использованию ОЗУ меньше чем у БЭСМ-6.
Татарин> Но это НЕ тупиковое решение, тоже имеющее и богатые возможности развития, и свои плюсы. Это именно что тупиковое решение - делать бизнес-задачи на архитектуре, которая не совсем для них приспособлена.
Татарин> Именно по части прямой совместимости снизу вверх тут, например, сплошные выгоды: ты можешь наращивать регистровый файл без изменения системы команд. Просто у тебя на новом процессоре СТАРЫЕ программы без всякой переделки начинают работать быстрее. Эволюция архитектуры пошла в сторону эльбруса, а не в сторону оптимизации БЭСМ-6 для бизнес-задач, типа увеличения кэша.
Это мы сейчас
достоверно знаем.