Татарин> Про char* p - конечно. А вот нативный тип наподобие alfa напрашивается, и инструментарий для работы с ним тоже. Появился же в С инструментарий работы с произвольными битовыми полями в составе union? Ну и для нативного типа alfa был бы инструментарий обращения к конкретному байту. Татарин> Тем более, как уже не раз сказано, для аппаратной поддержки подобного не нужно ничего кроме пары инструкций чтения/сохранения. Вообще-то на Паскале есть record который допускает работу с аналогом union, но у тебя варианта ровно два:
- либо ты по-простому индексируешь массив char и производишь операции по нему, т.е. простой код
- либо ты используешь трюки с alfa что как бы быстрее но код гораздо сложнее
Внимание, это в
прикладной программе! Я про код на Паскале.
И в первом случае на БЭСМ ты имеешь что-то типа такого когда Паскаль это превратит в машкод
section .bitMask mask word 0000000 0000000 0000000 0000000 0000000 1111111 000000 word 0000000 0000000 0000000 0000000 1111111 0000000 000000 word 0000000 0000000 0000000 1111111 0000000 0000000 000000 section .shifts shft word 0x000000000000 ; сдвиг на 0 позиций word 0x000000000007 ; сдвиг на 7 позиций word 0x00000000000e ; сдвиг на 7+7=14 позиций section .data val word 0000111 0000110 0000101 0000011 0000010 0000001 000000 ; слово 'аbcdef' bas word 0000000 0000000 0000000 0000000 0000000 0000001 000000 ; буква 'а' section .var idx word 0x000000000002 ; индекс 2 ( третья буква ) ; нам надо проверить что третья буква в слове val такая же как в bas set idx1, mask ; заносим в первый индекс регистр адрес маски ; команда УИ БЭСМ ( адрес прямо в команде, нет обращения к ОЗУ ) set idx2, shft ; заносим во второй индекс регистр адрес сдвигов ; команда УИ БЭСМ ( адрес прямо в команде, нет обращения к ОЗУ ) add idx1, @idx ; увеличиваем первый индекс на смещение с величиной по адресу ; команда СИ БЭСМ - РАБОТА С ОЗУ! add idx2, @idx ; увеличиваем второй индекс на смещение с величиной по адресу ; команда СИ БЭСМ - РАБОТА С ОЗУ! ld @val ; заносим в сумматор ( аккумулятор ) величину строки ; команда СЧ БЭСМ - РАБОТА С ОЗУ! and idx1 ; логическое AND сумматора с величиной по адресу в индексном регистре 1 ; это мы выделяем третий символ ; команда ЛУ БЭСМ - РАБОТА С ОЗУ! shr idx2 ; сдвиг сумматора на величину по адресу в индексном регистре 2 ; символ сдвинут, его надо привести к сравнимому виду ; команда СД БЭСМ - РАБОТА С ОЗУ! jcmp bas [адрес куда надо] ; сравнение сумматора с символом и переход ; команда УО БЭСМ - РАБОТА С ОЗУ!
Это примерный аналог того, что будет если идти тупо по индексу. Я упростил и не взял вычисление поиска нужной alfa, т.е. адреса начала слова с символами, по idx.
Но даже тут все понятно:
у БЭСМ нет регистров как в 360 или в PDP-11 или в х86. Там есть только аккумулятор, операции с которым, типа сложения, выполняются указывая второй адрес
в ОЗУ, либо напрямую либо через индексные регистры.
Обращение к памяти сразу съедает у тебя скорость.
В случае адресации байтов, достаточно взять адрес строки, сделать смещение в РОН на индекс и далее взять в другой РОН байт по одному адресу ( обращение к ОЗУ ), во второй взять байт по адресу базы ( обращение к ОЗУ ) и сравнить два РОН.
Два обращения к ОЗУ и никаких битовых масок!
А во-втором случае с хитрыми трюками с alfa это
неподъемно для средней тетки-бухгалтера-программиста.
В итоге - выберут первый и машина будет работать... со скоростью Минск-32.
Татарин> Твоя беда в том, что ты, рассуждая об альтернативе, парадоксально отрицаешь возможность альтернатив в принципе, и эта внутренняя логическая противоречивость - твоя отправная точка. ![:) :)](//s.wrk.ru/s/smile.gif)
Я не против обоснованных альтернатив.
Но ты их не показываешь, а уперся в БЭСМ-6. Причем даже не посмотрел что там все вокруг аккумулятора и ОЗУ крутится.
Ну не прижились нигде машины с адресацией длинных слов!
Объективное это то, что удобно пользователям независимо от случаев - в СССР или в США.
Но ты не приводишь объективных доказательств! - только "заговор" ЦРУ в США для CDC или "заговор" СлаваКПСС в СССР.
Если человек ссылается на "заговоры" то это к фентези, а не к обоснованной альтернативе.
Это сообщение редактировалось 06.01.2024 в 01:18