Читать книгу: «Солнце на краю мира», страница 7

Шрифт:

– А что именно доделываете?

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

– Ну, последнее тестирование выявило один неприятный момент, который мы не могли заранее предвидеть… Устранить его несложно, но времени мало.

Хотелось добавить крепкое словцо в адрес Виточки и Дэвидсона, и аудиторов, и Рустема… И, возможно, Дженнифер даже нужно посвятить в наши интриги. Но почему это должен делать я?..

А Дженнифер, между тем, не унималась:

– По образованию я технарь, к тому же работала в SP Laboratories, поэтому не беспокойтесь, можете употреблять научные термины. Расскажите толком, что за проблему вы сейчас решаете?

– Раз вы настаиваете… Во время MSA молекулярный пойнтер хранится в отдельной памяти, поскольку у него размерность как у числа Авогадро, да еще в трех измерениях. И этих пойнтеров там одновременно хранится тоже двадцать второй – двадцать третий порядок. – Я сделал проверочную паузу. Дженнифер кивнула, ожидая продолжения. – Дэвидсон, в своем репертуаре, увеличил их количество еще на пару порядков. Память не резиновая, она начала выкидывать что-то в своп. Алгоритм свопа там стоит простейший, он не отслеживает, сколько времени в памяти пролежал тот или иной пойнтер, а свопает все без разбора. И получается, что туда-сюда он гоняет одни и те же ячейки, ненужные, и в итоге контроллер памяти перегревается… – Дженнифер кивнула менее уверенно. – Нарастить память мы не можем, тогда всю архитектуру надо менять, разрядность увеличивать. Алгоритм свопа переделывать – сложно и чревато, его нужно тщательно отлаживать, это очень низкий уровень системы… Да и вообще, про своп – пока мое личное предположение, потому что я с таким и раньше сталкивался. В итоге, мы сейчас тупо монтируем дополнительную систему охлаждения памяти. Видимо, единственный вариант в нашей ситуации.

Дженнифер старательно вслушивалась в мою тираду, подавшись вперед и напрягая брови. Когда я закончил, она секунд десять хмурилась, делая вид, что вовсю обмозговывает мои слова. В тот миг я бы не удивился чему-нибудь вроде: «А память ASA вы использовать не пробовали? Она же больше». Но Дженнифер внезапно рассмеялась:

– Нет, все-таки ничего не понятно! У вас что-то перегревается, и вы это охлаждаете, потому что причину исправить не можете. Вот и всё… Ну, Артур, не смотрите на меня, как на блондинку, зато я в информационной безопасности разбираюсь почище вашего Дэвидсона!

Она улыбнулась не без кокетства. В ответ я изобразил свою лучшую отеческую улыбку.

– Да бросьте, что вы… Я на пару недель уйду в отпуск – тут же забываю, что у нас какими словами называется! А вы говорите: работали в SP…

– А конкретно вы чем из всего этого занимаетесь? – спросила она. Несмотря на заигрыши, она не сдавалась, и это настораживало. Не из вежливости было ее любопытство.

– Как вам сказать… – произнес я неопределенно. – Бегаю за всеми и подтираю, извините за выражение… Называется: проектный менеджмент.

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

– Кстати, Дженнифер, – спохватился я, изобразив внезапность, – не возражаете, если мы будем на «ты»? У нас так принято.

– Да, Артур, конечно, – сказала она безразлично.

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

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

– Большое спасибо взаимно! – пропела она и очаровательно улыбнулась. Ее недавней пытливости и след простыл, улыбка была теплая и искренняя, отнюдь не соответствующая столь дежурной благодарности… Меня кольнуло чувство вины за устроенный допрос.

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

Ощущения после разговора у меня были смешанные. Начальственный гнев внезапно сменялся юношеским мандражем. «Не влюбился ли ты, Борисыч?» – нет, не то. Просто красивая женщина и гормоны, от которых я отвык. Их нужно прятать; давать им волю у меня всегда плохо заканчивается, я этого не умею. Нужно подчинять их логике.

А логика в том, что Дженнифер – странная. Непонятная. Кого-то из себя строит. Втирается в доверие и норовит что-то выпытать. Взывает к чести «бывшего аналитика» и «боевого офицера»… Однако минутка слабости, похоже, была натуральной. Пыталась выправить ситуацию, но спотыкалась… И прощальная улыбка была настоящей. Утром она улыбалась совсем иначе…

Да ну, хватит. Какой из меня психоаналитик? Зарекся же читать по глазам… Обычная тактика: к тебе благосклонны – улыбайся и нападай; допрашивают – бойся и плачь… Возможно, я вовсе не выиграл эту беседу, а поддался на ее многоходовку. Она открыла мне свою слабость, и теперь я вынужден относиться к ней с долей нежности.

Вспомнилось, как однажды Фрайд умудрился растрогать тем же методом саму Кэйси. Ее излюбленным приемом убеждения было пустить слезу. Казалось, все вокруг понимали, что это игра (кроме Корлейна, разве что), но ничего не могли с собой поделать и поддавались. А Фрайд отплатил ей той же монетой: он единственный распознал, что в ней «сильно материнское начало», и с ней надо быть «маменькиным сынком». Помню, я его в шутку обозвал Фрейдом, на что Крег поржал, а потом втихаря выяснял у меня, кто такой Фрейд… Надо знать Марка, чтобы понять, как он грамотно сумел выстроить разговор, чтобы и достоинство не уронить, и поныть как следует. В результате из нас троих он один получил увольнительную на целый месяц и укатил куда-то в Юго-Восточную Азию. А мы с Крегом, как и положено, пооткисали всего неделю: он на пляже под Барселоной, кишащем потными испанцами, я – в Мастиано с Мари.

*

Мои размышления прервал Гарри Игнатьев-Фойерман, на которого я наткнулся перед дверью собственного кабинета. Всенародный и общекорпоративный наш друг стоял, переминаясь с ноги на ногу, и сосредоточенно елозил шоферской перчаткой по телефону (а не шатался, как обычно, поперек коридора, мешаясь всем на травелаторе и заигрывая с каждой проезжающей женщиной, независимо от ее возраста и привлекательности). Гарри Федорович был одет в свой знаменитый черно-красный комбинезон гонщика с активным охлаждением, облепленный нашивками со всех стран мира, где этот потомственный водила успел помотаться за свой век. Загорелая лысина была выбрита под ноль, аж отсвечивало. Как всегда, от него пахло фастфудом, потом и освежителем салона.

– Здорово! Где пропадаешь, едрить-батон? – он мигом убрал телефон, содрал перчатку и протянул красную ручищу.

Гарри выглядел настороженным, как сказали бы те, кто с ним коротко знаком и не говорит по-русски. На самом же деле он был напуган до ужаса, и я это понял сразу.

– Хрен ли вы тут делаете, ученые, профессоры кислых щей, мать вашу?! – зарядил он материться опасливым полушепотом. – Меня чуть не убило, едрить, крыло прохреначило насквозь. Задержись я на полминуты, все – капец мне был бы!

Я молча схватил его за плечо и потащил по коридору в переговорку. Идти было два шага, он не успел засопротивляться. В переговорке сидел одинокий программист с ноутбуком; с ходу я гаркнул «Совещание у нас тут!», и он испарился. Я затолкал Гарри внутрь и запер дверь.

– Ну, выкладывай, только без эмоций и подробно.

И Гарри многословно, с отступлениями рассказал, как он с утра летал то за одним, то за другим в несколько магазинов, весь город исколесил, едрить-батон… Возвратившись, он парковал оверкар на своем обычном месте на крыше, и что-то ему показалось неладно с левым передним антигравитатором. Вылез он, значит, посмотреть, и точно – почистить бы надо сетки, а то откажут на дороге, а ведь говорил он Рустему, но тому все до фени… Словом, задержавшись на минуту с антигравитатором, он удачно избежал прямого попадания «хрен знает какой шняги», вылетевшей прямо из крыши здания, «ракета херова!..» Оверкар тряхнуло неслабо, внутри отказала вся электроника, машина даже рухнула на асфальт, а ведь Гарри говорил Рустему, что надобно бы противоударный аккумулятор поставить, но фиг ли толку… В результате, пробило ему левое крыло. Это-то не страшно, дырка с два кулака, с ровными краями, а поверхность крыла целая, летать можно, кособочить маленько будет, ну да не на таких тазах летали… Самое главное – сила удара; это Гарри больше всего напугало и вместе с тем восхитило. Вот бы жахнуть из такого по египетским сепаратистам, едрить мать их…

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

– Кому ты успел об этом растрепать? – перебил я его.

– Артур, я не трепло, ты же знаешь, я могила, – заговорщически продолжил он, но, конечно, никакая он был не могила, и от этого холодело в копчике.

– Федорыч, заглохни и отвечай на вопрос: кому ты успел об этом рассказать? Говорил же кому-то, по глазам вижу! По чьему поручению ты ездил?

– Артемона… Ну, доложился ему, но он не выслушал толком, пинком под зад отправил к тебе, и всего делов. Я чуть не обделался со страху, а он даже не выслушал…

Деев – это хорошо. Но наверняка Гарри разболтал и кому-то по дороге… Я стал на него давить, называть имена тех, кто мог ему встретиться, однако Гарри упорствовал, что он могила, и никому, окромя единственно Деева и меня, он не поведал ни полслова.

– А что еще вылетело? Куски бетона, камни, песок, пыль – были? Куда оно все делось?

– Песок был, да, бетонный… Вылетел столбом и осел, крыло мне засыпал… Камни – были, ясен пень, Борисыч! Крыло мне, по-твоему, чем пробило, ежели не камнем?

– Федорыч, прошу тебя очень, не думай сейчас головой, просто отвечай и все! Думать буду я. Были куски бетона? Валяются они там, на парковке?

– А… да нет, там все чисто. Только крыло сверху слегонца присыпало, да и все. Мужики подумали, что у меня рванул компрессор.

– Какие еще мужики, Гарри?! Сколько народу было на парковке?

– Да никого не было, Артур, это я так… Проходило пара пацанов твоих, очкарики, тоже обосрались от страха, но они ничего не видели, я отвечаю, – Гарри подался вперед так, что чуть не лег на стол, так ему хотелось быть замешанным в какую-то тайну. – Они потом проходили мимо, когда я возился с крылом… Один и сказал, мол, компрессор рванул, типа умный, едрить его… И стоит, зырит, как я там корячусь. Ну, я ему высказал. Не сильно, не боись. Так, погрозил монтировкой, он и смылся.

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

Сегодня Гарри предстояло докупить всякого для презентации: софиты, переносной кондиционер, генератор.

– Плевать на это барахло, завтра съездишь! Сейчас вот что: вспоминай, куда улетела эта штука! Был же от нее след? В небе был след?

– А как же, Борисыч! Как от самолета, белый такой… Ха-ха, компрессор рванул, вот балабол, умора… Компрессор – это ж не ракета! Он – хлоп, и все.

– Федорыч, замолкни, никакой ракеты не было. Ты помнишь, куда вели следы? Направление хотя бы…

– На север, в сторону промзоны ушла. Кажись, даже примерно знаю, куда она упала.

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

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

– Борисыч, ну ты потом растолкуешь, что у вас за эксперименты, а? – канючил он. – Я Артемона спрашивал, он рявкнул, как на шавку, и отправил к тебе…

– Растолкую, Гарри. Потом. Сейчас я могила и ты могила. Давай, дуй туда и обратно, быстро!

Он вскочил, на ходу от радости крикнул «Есть!» и скрылся за дверью.

*

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

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

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

Если не считать того, что под ногами противно скрипел песок от огнетушителя, а в одном месте было пролито моющее средство (на нем я неаккуратно поскользнулся подвернутой ногой) – результат вполне устраивал. Прихрамывая, я по-быстрому отвез роботов обратно (встретил двух фундаментальщиков на травелаторе, которые молча проводили меня коровьими глазами), включил в комнате кондиционер и закрыл окно. Пришлось подпереть створку огнетушителем, потому что ручка на окне была сломана с его же помощью.

Обливаясь потом, я, наконец, водворился за столом и первым делом позвонил алгоритмистам. Платон ответил, что с новым драйвером дела складываются, но на одном аккумуляторе много не протестируешь. А почему он не возьмет у Деева второй aCC-10? А потому что от голого аккумулятора толку с гулькин хрен, к нему надобно отдельный контроллер докупить, для чего уже зафрахтован Гарри… Некстати я отправил Федорыча на поиски улетевшей фиговины… Далее Платон затеял рассказ в своей искрометной манере, представляю ли я, какие у Корлейна, оказывается, криволапые инженеры? Там они не предусмотрели, парнокопытные, здесь им нужна отдельная железка… Слушать его анекдоты было некогда, и я распрощался.

Засим я зачем-то набрал Деева. То был не вполне осознанный, эмоциональный поступок. Позднее я понял, что хотел лишь разделить с ним страдания по дыре, но в тот раз выложить всё не решился. Позвонил я некстати, оторвал его от воспитания подчиненных. Он орал, что «в следующий раз уволит обеих», «задолбали своим инфантильным поведением» и долго не отвечал на мои приветствия. В конце концов, гаркнул, чего мне надобно, и я, растерявшись, пересказал ему разговор с Платоном.

Он честно не мог взять в толк, зачем я звоню ему по столь пустяковому поводу. Для солидности я затронул вопрос финансирования: можем ли мы закупить дополнительно полсотни контроллеров про запас?

– Пятьдесят штук? Нафига так много? Бюджет же!

– А что бюджет, Тем? – настаивал я просто так. – Давно вылезли за него, плюс-минус уже роли не играет. Все равно их покупать, ребята ведь переписывают драйвера, разводку меняют на плате…

– Ладно, черт с вами… – сказал он, чтобы отделаться. – У вас, куда ни глянь, везде жопа.

– Окей… Про Гарри потом поговорим, – добавил я мимоходом главный зондирующий вопрос.

– Что про Гарри? – удивился он. – А… ну, приходил он. Так я к тебе его отправил… Чего ему?

– Да так… ничего серьезного. Потом с тобой поговорим. Не распространяйся, что он приходил, хорошо?

– Тур, пожалуйста!.. – немедленно забеспокоился он. – Что там еще стряслось? Дженнифер в курсе?

– Артем, не ной, я все разрулю сам, – оборвал я. – От тебя требуется только молчать. Ты в состоянии молчать?

– Да, – простонал он. – Но почему Дженнифер не в курсе? Что бы там ни было, поручи это ей, ты меня пугаешь…

– Позже сообщу ей. Я ей пока не доверяю, так и знай.

Он проблеял что-то негодующее и отключился. Видите ли, какой бедненький, тяжело ему, когда все вокруг приносят плохие новости. Зато себе я принес хорошую весть: ни о какой аварии Деев не знает. И, значит, о ней не знает никто, кроме Гарри.

*

Наконец, я отбросил планшет, протер рукавом лоб, а заодно и экран терминала, на котором оставался налет седины от огнетушителя, и приступил к тягостным думам. Думы были тягостными по простой причине: проблема, приведшая к аварии – инженерная. А значит, сколько ни отлаживай свою программу, результат не улучшится. Это еще в первый раз стало ясно, когда отладчик ошибок не выдавал, а на «боевом» запуске случился песок.

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

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

Я взглянул на дыру и приуныл. Пространство искривилось по эллипсоиду… Это тебе не лишний inc. Дэвидсон отлавливал подобные ошибки сто лет назад на первой серии наших аппаратов, и тогда же они были искоренены с помощью аппаратных проверок… Но вот, искривление пошло по гребаному эллипсоиду, и ни одна аппаратная проверка не сработала! Электронику не взволновали ни километровые расстояния, ни адский расход энергии. Тут действительно было нечто очень глубокое.

Моя программа использует все, на что способен Porta. Разумеется, жемчужина его таланта – изменение строения атомов и молекул, ASA и MSA, дай бог Дэвидсон нам их не «зарежет». Есть функции анализа вещества, вплоть до субатомного уровня. Об этих функциях даже Опалян в курсе, и они давно оттестированы. Еще есть всякие деформации объекта по сетке, которые и в Stanley работали прекрасно. А я объединяю всю эту красоту в одной программе. И она выжимает из аппарата соки похлеще конвейерной работы.

Минут пятнадцать я тупо сидел перед терминалом, прокручивал туда-сюда свой код и перебирал потенциально проблемные функции. Создание сетки объекта? Фотосканирование границ? Все это оттестировано… ASA? У Дэвидсона на ней перегревается аккумулятор… и что? Объекты-то у него перестраиваются верно…

Не то.

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

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

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

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

Давай-ка соберемся. Как решают задачи, способ решения которых тебе не известен?.. Почему-то вспомнилось, как мы в 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… Часа на три работы.

– Очень оригинально, Ави, – повторил я. – К «костылям» у тебя настоящий талант.

Но менее «костыльных» идей ни у меня, ни у него не было. Я заручился его молчанием о дыре, и мы расстались.

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

Я стал аккуратно рефакторить код, избегая совместного использования этих дьяволовых регистров. Возился я внушительное время, отвлекся начисто от всего окружающего и не следил за часами. Задача искоренения es оказалась нетривиальной и потребовала изрядного количества кода. Вдобавок, меня обуревал страх новых ошибок, которые, если натворить, уже не будет времени вычистить, и поэтому я намеренно медлил даже в простых местах и перепроверял все трижды. Это последний отрезок эстафеты, момент истины, думал я, и надо хоть раз в жизни сделать все без задоринки с первого раза.

В самый разгар меня прервал телефон. Он звонил, вероятно, с минуту, прежде чем я вышел из транса и взял трубку. Это была Дженнифер.

– Артур, вы сейчас свободны? Мне необходимо с вами поговорить. Есть новая информация.

Голос был казенным, как у автоинформатора. И мы вроде договорились на «ты»…

– Слушаю, – сказал я.

– Это срочно. Позвольте, я к вам зайду?

– Ко мне? – заволновался я. – Зачем? Давайте в переговорку… Вообще, я сейчас очень занят. Говорите, в чем дело?

– Разговор не телефонный. Я отниму всего пару минут.

– Э-э, – промычал я, холодея. – Нет! Сейчас неудобно, давайте через полчаса в переговорке…

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

– Артур, в самом деле, вы там голый, что ли? – усмехнулась она, не теряя делового тона. – Откройте, я правда на минутку.

Она отключилась. Я посидел мгновение, соображая, но вскоре стук повторился. Назад дороги нет, не впустить ее нельзя, иначе не миновать мне проверки со стороны Ярослава Бойко. Эти ее въедливые вопросы за обедом о сути моей работы… Ноги слушались плохо, пока я плелся к двери. Шила в мешке не утаишь. Невелика разница, сейчас все рассказать или потом. Да и Деев настаивает, чтобы я доверял ей…

Отперев замки, я решительно распахнул дверь и попытался лицом изобразить беззаботность. Но Дженнифер с порога узрела, во что превратилась комната, поморщилась от запаха гари и захлопнула дверь. Ее лицо выражало горечь и разочарование, и смотрела она на меня, как на нашкодившего сына.

– Боже мой… Подозревала, что у вас творится что-то неладное, но чтобы настолько… Ну, выкладывайте.

– Сначала вы.

Она подняла брови с видом «ну знаете ли!», однако заговорила:

– Внештатник, про которого вы меня спрашивали, с вероятностью восемьдесят процентов – действительно, из Верховной Ассамблеи. Предполагаем, что он сегодня делает неофициальный обход, осматривается, что да как…

24.Reserved for Future Use – зарезервировано для использования в будущем (англ.)
25.Флаг переполнения (англ.)
219 ₽
Возрастное ограничение:
18+
Дата выхода на Литрес:
16 января 2017
Объем:
925 стр. 9 иллюстраций
ISBN:
9785448347757
Правообладатель:
Издательские решения
Формат скачивания:
epub, fb2, fb3, ios.epub, mobi, pdf, txt, zip

С этой книгой читают