KnigkinDom.org» » »📕 Проект «Сфера-82»: Цвет и слой - Станислав Миков

Проект «Сфера-82»: Цвет и слой - Станислав Миков

Книгу Проект «Сфера-82»: Цвет и слой - Станислав Миков читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

1 ... 72 73 74 75 76 77 78 79 80 ... 131
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
лицо его расплылось в широкой, облегченной ухмылке. Модульность спасала его от написания двух разных веток системы.

— Блестяще, — выдохнул программист, возвращаясь к распечаткам. — Пусть городят в своих платах что хотят. Главное, что ядро останется чистым.

Алексей сел на стул. Единого монолита из «Сферы» больше не было, но и распада на несовместимые острова не случилось. Появилась система шлюзов. Тяжелая, бюрократическая, требующая кучи подписей, но она давала гражданской машине законное право на жизнь. Закрытая комната «82В» осталась позади, подчинившись общим правилам.

Глава 27

Кофейная: как написать слой

Громов постучал тупым концом карандаша по колонке цифр. Широкая простыня распечатки с результатами утренней трансляции занимала половину выцветшего канцелярского стола. Рядом с перфолентой лежала распечатка Ланской и набросанная от руки карта адресного пространства «Сферы-82».

В бывшей кладовке, заставленной тяжелыми стеллажами из стального уголка, густо пахло свежемолотым зерном. Ручная мельница примостилась на самом краю столешницы. Морозов налил себе кофе. Громов плеснул в кружку молока — стеклянная бутылка как раз согрелась в эмалированном ковшике с горячей водой.

— Транслятор Беспалова отработал, — Громов сдвинул край распечатки. — Базовые структуры собрались в объектный модуль без ошибок. Но посмотри на итоговый объем.

Громов с нажимом обвел итоговую сумму.

— Шесть байт на каждое прямое обращение к массиву. Восемь байт на элементарный сдвиг указателя, — Громов ткнул пальцем в колонку ассемблерного листинга, который компилятор выдал на экран. — Смотри сюда. Транслятор языка Си писался под архитектуры, которые умеют аппаратно работать со структурами. А наш К580 этого не умеет, у него нет базово-индексной адресации. Чтобы сдвинуть указатель на следующий прямоугольник, твой хваленый компилятор не использует простую команду инкремента. Он кидает адреса в стек, делает вызов внешней арифметической подпрограммы, вычисляет смещение, потом вытаскивает результат обратно…

Громов раздраженно отпил молока.

— Программа переводит твой синтаксис, но если я пущу этот сгенерированный код в плотный цикл на проверку десяти тысяч пересечений, процессор просто захлебнется в пересылках стека. Машина встанет колом.

Морозов сделал глоток. Кофе получился отличным — крепким, без малейшей горечи.

— Зато этот текст скомпилировался за две минуты, и логика проверки прозрачна как стекло, — парировал Алексей. — Женя, мы не можем писать весь «СЛОЙ» на чистом ассемблере, мы утонем в отладке. Правило простое: мы пишем общую структуру на Си. Ищем узкое место — ту самую функцию, которая сжирает девяносто процентов времени на пересечениях. И вот ее, одну-единственную, ты переписываешь вручную на идеальном ассемблере, подменяя стандартную библиотеку компилятора.

Громов нахмурился, обдумывая этот подход. Комбинирование языков было не самой привычной практикой, но оно решало проблему сроков.

— Допустим. Вынесем математику пересечений в ассемблерный модуль. Но оперативной памяти он нам не прибавит.

— Значит, новые машины надо собирать сразу с полным адресным полем, — сказал Морозов. — Выжимать все шестьдесят четыре килобайта.

— Текущий живой стенд работает на тридцати двух, — напомнил Громов. — Новая полная карта — это дополнительные банки памяти, старшие адресные линии, усложненная дешифрация и увеличенная нагрузка на шину. Нам нужна абсолютная стабильность и одинаковость всех новых плат. Транслятор генерирует объемный код, а мы еще ни одной координаты с гибкого диска не считали. А дисковод ИЗОТ, между прочим, читает сектора не со скоростью света.

— Файл Каца придется читать порциями, — Алексей поставил кружку на стол.

— Файл Каца — это просто свалка координат, — отрезал Громов. — Чтобы читать его порциями по оси X, как ты хочешь, данные должны быть отсортированы слева направо. А топологи так не рисуют. Значит, до твоей красивой проверки на Си мне придется написать грубый сортировщик. Она будет заглатывать сырой массив с дискеты, сортировать прямоугольники в памяти и писать обратно на диск временные файлы. Мы упремся в физику магнитных головок.

Морозов кивнул, признавая проблему.

— Си удобен для описания структур данных, таблиц и общей логики, Женя. Нам проще оперировать терминами: слой, зазор, контактная площадка. Язык берет на себя рутину: мы видим размер записи и обращаемся по указателям, не высчитывая физическое смещение адреса в уме.

Громов скрестил руки на груди.

— Критичные участки, буферы, побайтовый ввод-вывод — это ассемблер, — подтвердил Морозов. — Куски, где важен каждый байт. Но общая структура «СЛОЯ» и форматы обмена остаются на Си.

— На бумаге всё выглядит красиво: общая логика на Си, узкие места на ассемблере, — протянул Громов. — А неприятности начнутся на стыке. Там, где пойдут вызовы функций, работа с памятью и соглашения о передаче параметров.

Морозов придвинул к себе распечатку Ланской. Страница пестрела карандашными эскизами печатных проводников. На мелкой сетке миллиметровки пересекались два прямоугольника.

— Давай от споров к рабочему примеру, — Морозов обвел ручкой узкую светлую полоску между фигурами. — Строгое зеленоградское правило. Минимальный допустимый зазор между двумя трассами на этом слое — две десятых миллиметра.

Он вывел на полях цифры «0,20».

— Плюс технологический запас на боковое подтравливание меди в ванне, — добавил он. — Три сотых. Итого — ноль двадцать три.

Морозов записал сумму рядом с эскизом.

— Нам нужно превратить это правило в числовую таблицу, — Морозов перевернул страницу. Ручка заскользила по бумаге, выстраивая колонки. — Первый байт — номер слоя. Второй байт — код проводимой проверки: замыкание, обрыв или нарушение зазора.

Громов наклонился ближе к столу.

— Дальше переводим миллиметры в целые единицы координатной сетки, — диктовал Морозов. — Дробная арифметика здесь не нужна. Это еще два байта.

— Четыре, — подсчитал Громов.

— Один байт на запас по травлению. Один байт — битовая маска свойств: флаг метки совмещения, признак контакта, маркер цепи питания.

— Шесть.

— И два байта под номер исходной строки из зеленоградского файла. — Морозов дважды подчеркнул последние цифры. — Иначе, найдя ошибку, мы не сможем объяснить топологам, где она находится на ватмане.

— Восемь байт на запись, — прикинул в уме Громов. — Тысяча правил уложится в восемь килобайт ОЗУ.

— Именно.

— Вполне приемлемо, — кивнул Громов. — Но это статический справочник. В реальной работе мы получим стопку гибких дисков с десятками тысяч координат. Причем мы понятия не имеем, в каком порядке зеленоградские операторы вбивали эти отрезки.

Он придвинул к себе чистый лист.

— Потребуется первый проход. Считываем текстовый файл построчно. Номер слоя, координаты, контрольное число. Мой модуль сверяет арифметическую сумму кодов с числом Каца. Это гарантирует только то,

1 ... 72 73 74 75 76 77 78 79 80 ... 131
Перейти на страницу:
Отзывы - 0

Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.


Партнер

Новые отзывы

  1. Semmi Semmi22 июль 17:17 Не знаю, кто выложил эту книгу здесь без разрешения и без указания чтецов, но хочу чтобы слушатели знали: Над начиткой этой книги... Priest - В башне над мостом
  2. Гость Наталья Гость Наталья22 июль 08:37 Отлично,даже очень захотелось продолжения этой истории.... Перо бумажной птицы - Елена Ивановна Михалкова
  3. Гость Татьяна Гость Татьяна17 июль 09:40 Начала читать эту книгу из-за предыдущего отзыва. Ну не ВАУ!, но интересно ... Неправильные - Катрин Корр
Все комметарии
Новое в блоге