Категории
Самые читаемые
PochitayKnigi » Проза » Русская современная проза » Солнце на краю мира - Антон Шаманаев

Солнце на краю мира - Антон Шаманаев

Читать онлайн Солнце на краю мира - Антон Шаманаев

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 17 18 19 20 21 22 23 24 25 ... 42
Перейти на страницу:

Не то.

Встал, прошелся по комнате.

В дыре гудели налетающие порывы ветра. Чтобы оттуда ничего не насыпалось, я нахлобучил на искривитель колбу. Искривитель был чист, как отполированный велосипед, и видом своим изображал полную готовность к дальнейшим подвигам.

За окном стояла неподвижная картина жаркого дня. Подавленный солнцем, замерший мир. Неподвижны были окна соседнего здания. Лишь на одном из них, лениво поддаваясь ветру, колыхалась какая-то привязанная ленточка. Внизу на ступеньках черного хода сидел неподвижный турок в узорчатой униформе, отлучившийся из ресторана покурить. Лениво растворялся в воздухе дымок его сигареты.

Инженерная проблема… Давай-ка не будем пугать себя этим словосочетанием. Пока есть надежда на то, что ошибка найдется и окажется легкой, нельзя бросать ее поиски.

Давай-ка соберемся. Как решают задачи, способ решения которых тебе не известен?.. Почему-то вспомнилось, как мы в Gateway собеседуем новых инженеров и программистов. Вернее, мы-то с Платоном или Новшеком собеседуем их по-человечески. А вот попадись они Дэвидсону или Опаляну, который порой захаживает на интервью – как пить дать, получат бессмысленную задачку на логику. Посчитать, сколько теннисных мячиков вмещает межгалактический SP-Z… Один кандидат не знал, как выглядит SP-Z, и Рустем немедленно его выпроводил.

Был бы я кандидатом, задали бы мне вопрос: почему пространство искривляется сосиской? Устройство аппарата мне не известно. Как бы стал решать?.. Ну, тестировал бы каждую элементарную операцию, месяц бы провозился… Ладно, пускай мне известно, что в типичных условиях каждая элементарная операция уже оттестирована Дэвидсоном. Сэкономим время и рассмотрим только нетипичные условия. Да ведь и их много, нетипичных…

На узенький край окна соседнего здания сел воробей, повертел головой, и спрыгнул.

Краевые ситуации… Откуда я это вспомнил? Краевые задачи… Диффуры тут ни при чем. А вот краевые ситуации рассмотреть стоит. Что-то работает, доходит до края, и – что происходит потом?

Я вернулся к своему коду и стал с новой точки зрения его рассматривать. За четверть часа выписал на бумажку штук пятьдесят операций, где что-то «ходит по краю». Потенциальная нехватка памяти или превышение разрядности регистра… Из этого списка выбрал шорт-лист наименее элементарных ситуаций, чтобы проверить и отсечь их в первую очередь.

Стенка шкафа, который давеча одарил меня старомодным пиджаком Деева, была запорошена белой пылью, и я стал пальцем рисовать на ней «кирпичики»: регистры – друг за другом в ряд, в сторонке – стек, сегменты памяти. Зарисовывал каждую краевую ситуацию стрелочками: что откуда берется и куда пишется. Стенка быстро пришла в негодность, однако я добрался до операции с составным регистром и вдруг задумался: а как физически он устроен?

Не поленился, отыскал на портале инженерную спецификацию процессора, перерисовал с нее кирпичики регистров – поставил их в правильном порядке. Из шестнадцати регистров две пары идут друг за другом и образуют два составных регистра – это os:op и qs:qp. И туда, и туда обычно кладутся пойнтеры – координаты объектов, с которыми в данный момент происходит работа. В первом из этих составных регистров у меня объект-образец, в другом – результирующий объект. С ним я делаю MSA, и поэтому их, объектов-молекул, в реальности очень много. И координаты их всех проходят поочередно через qs:qp. А что происходит, если составной регистр переполняется? Поднимается флаг переполнения, как обычно. На такой случай предусмотрено особое сообщение, но оно не появляется. Лог сообщений пуст. Значит, qs:qp не переполняется.

Стоп! Но ведь у меня объектов – на много порядков больше штук, чем способен вместить этот регистр! Как он может не переполняться?.. В памяти всплыл афоризм времен молодого Опаляна, когда-то висевший на двери Дэвидсона: «Излишнее доверие к рукотворному затмевает разум». Дорогой мой.

Идея довольно безумная: переполнение регистра – хрестоматийная штука, которую отлавливают на первых же инженерных тестах. Потом я вспомнил: регистры qs и qp добавились позже. Наши ребята сами добавили их в процессор для серии Multus – это третье поколение. В первом поколении – Warper – стоял серийный процессор от SP Laboratories, и были лишь стандартные регистры. Начиная с Multus и до текущего поколения – шестого по счету – мы заказываем процессоры с особой архитектурой под наши нужды.

Бросив художества, я сворганил маленькую программку – тест на переполнение составного регистра qs:qp. Программа запустилась и завершилась без ошибок.

Я похолодел. Куда же девается лишняя старшая единичка при переполнении? Куда-то ведь она девается! Глянул на шкаф – перед qs и qp у меня был намалеван «кирпичик» es – сегментный регистр, который на практике используется редко. Согласно спецификации, регистры qs и qp физически пристегнуты именно к es. Я еще раз запустил тестовую программку и посмотрел, что на выходе получается в es. И увидел там свою единичку…

Ватными пальцами я набрал Ави Новшека. Может ли переполняться составной регистр qs:qp и гадить куда-то? Быть не может совсем никак, ответил Ави. Может ли он гадить в es хоть теоретически? Не может в принципе, исключено. А он, говорю, гадит, Ави. И флаг переполнения не поднимается.

Почему, думаю, за долгие годы этого не увидел Дэвидсон? Он мог и не знать того факта, что регистры физически связаны, поскольку в цивилизованном мире это не имеет значения для программиста. Он мог не использовать es, а может, у него qs:qp не переполнялся, ведь проблема переполнения встала совсем недавно, когда появилась MSA, и объектов стало столько, сколько молекул. На серии Oris он MSA не тестировал, поскольку там эта функция была неофициальной, а на Porta он MSA тестирует в данный момент… И вероятно, что и в его комнате вскорости пробило бы потолок, если бы аккумуляторы не перегрелись. Да, слишком много случайностей сошлось в одном месте! В результате – всего один выстрел в небо сквозь толщу стены, чудом уцелевший Гарри… Прямо скажем, все могло закончиться гораздо хуже.

В дверь неистово застучали. Это прибежал Ави, посмотреть на чудесные плоды собственного разгильдяйства.

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

Ави был в клетчатых штанах, фиолетовой рубашке и манишке. Стоило ему пройти пару шагов, как на его огромную кучерявую шевелюру успело откуда-то насыпаться порошка, и он стал яростно его вытряхивать, придерживая очки. Я продемонстрировал, как единичка попадает в совершенно чуждый регистр es вместо того, чтобы оказаться во флаге переполнения. Пару минут он пребывал в молчании и проматывал код программы от начала до конца, после чего цокнул языком и сказал, что, да, похоже, они с ребятами конкретно облажались.

– А все-таки – что у тебя стряслось? – повторил он, указывая на потолок.

Я объяснил, что это и есть результат того, что ребята его подгадили в самый неподходящий момент и в неожиданном месте.

– Спишу ремонт из вашего премиального фонда, – сказал я как будто в шутку.

– Списывай откуда хочешь, – Ави было не до шуток, он усиленно чесал репу, – Главное, что реально попа… Такое нельзя выпускать на рынок… Переделывать, тестировать – месяца полтора, а то и больше…

Конечно, я ожидал, что Ави от моего известия потеряет дар речи и будет решительно потрясен. И внутренне подозревал, что сроки переделки будут измеряться неделями. Однако, лишь когда Ави огласил вердикт, я вдруг осознал, что категорически не готов к такому развитию событий. Не готов я потерять все из-за подобной ерунды. Ни за что.

– Что же делать? – глупо спросил я.

Но Ави уже занервничал, а это хорошо, в режиме легкой паники он горазд придумывать самые оригинальные хитрости. Он слонялся из угла в угол, прижав кулак к подбородку, что-то сопоставлял, а под ногами на каждом шагу хрустел порошок. Наконец, он выдал:

– Мы в спецификации объявим регистр es нерабочим! RFU24.

Я даже похлопал в ладоши:

– Очень оригинально, Ави! Но тебе не кажется, что знающие люди нас обсмеют? Регистр es существует полтыщи лет во всех процессорах мира, а мы берем и говорим, что у нас его нет.

– Во-первых, мне до фонаря, кто над чем смеется. Во-вторых, ценность Porta – в новых функциях, а уж никак не в том, что он следует инженерным канонам… Всего-то допишем в драйвер процессора программную проверку es – если там появляется единичка, сразу же переносить ее в overflow flag25… Часа на три работы.

1 ... 17 18 19 20 21 22 23 24 25 ... 42
Перейти на страницу:
Тут вы можете бесплатно читать книгу Солнце на краю мира - Антон Шаманаев.
Комментарии