Из последней русифицированной справки.
Главное, что во всех твоих вариантах лишнее - это упаковка и распаковка на этапе исполнения, я и другие показывают варианты в которых компилятор организует код в котором не требуется упаковка и распаковка а действия сразу происходят с фрагментами но возвращается целое
И нет упирающихся, есть упирающийся )))
offtopic:
Маленькая историческая иллюстрация того, что структуры специально придуманы для манипулирования "кусками" памяти целиком если нужно или ими же по частям
Изделие 171 https://www.vpk-news.ru/articles/36177 в части системы обнаружения и наведения начинали испытывать в КапЯре в середине 80х прошлого века.
Телеметрический кадр постоянно менялся и была вечно переписываемая с более 50% из за этого мёртвого кода программа на ассемблере, которая мне и досталась по наследству.
Разбираться в чужом на скорую руку многократно переписанном коде без документации на ассемблере, то ещё развлечение. И как часто бывает в таких случаях сроки поджимают.
Что нужно сделать? Из за дефицита битности, те кто ставил датчики извращались как могли, однажды при подготовке к конференции по унификации и стандартизации мы насчитали 16 способов представления отрицательного 16-рязрядного числа.
Из телеметрического кадра разбитого на битовые фрагменты нужно было извлечь осмысленные значения датчиков с привязкой с службе единого-времени учитывая ещё при этом что автономный таймер-генератор самой рлс всё время куда то плыл.
И тут я вспомнил, что в PL/1 есть во первых возможность в так называемых базированных структурах описывать произвольные участки памяти с точностью до бита, а не байта а плюс к этому оператор BY NAME https://progi.pro/naznachenie-strukturi … ii-6451384
т.е. в последующем нужно было только описывать исходную структуру в соответствии с ТЗ, накладывать на буфер в памяти для чтения с исходной ленты, описывать результирующую структуру с осмысленными числовыми полями для записи на другую ленту и делать в цикле
Структура.Результат = Структура.Исходник BY NAME вместо постоянного переписывания асмовского кода. Я по семейным на Камчатку не поехал, был только в командировке сдавая им свой вариант.
Потом слышал, что эта простейшая программа проработала до смерти последней большой ЕС-ки в Ключах лет восемь-девять.
Отдельной строкой нужно упомянуть, что был бит(фигурально) в курилке, когда поняли, что моя программа ещё и асинхронно по вводу выводу с двумя лентами работала и могла трансформацию BY NAME в несколько потоков делать. Т.е. если она запускалась, то все терминалы у всех переставали "жить". С тех пор я с улыбкой читаю всякие НОВОСТИ с упоминанием слова АСИНХРОННО. )))
На фото меня нет, просто место-время совпадают.
Отредактировано useful (28.08.2020 09:00:47)