– А можно взглянуть на эту белиберду?
– Да уже во всех кодировках пробовал. Смотри.
– А если так? – Ольга наугад выбрала одну из экзотических кодировок – Вроде похоже на какой-то скандинавский язык. Закину в переводчик.
Переводчик, моментально распознавший язык как древнеисландский, выдал на экран единственную фразу:
ЭТО ДОЛЖНО БЫЛО СЛУЧИТЬСЯ. НЕ ВИНИ СЕБЯ. БУДУЩЕЕ В ТВОИХ РУКАХ.
В центре костра стоял приличных размеров камень-следовик с глубокой лункой в центре – причудливой игрой природы. Эта выемка позволяла им то, что недоступно было большинству охотников эпохи палеолита: варить пищу. В начавшую пузыриться горячую морскую воду Ольга закинула мидий, крабов и морских ежей.
– Приготовления затянулись, но завтрак обещает быть роскошным. Что у нас сегодня? – спросил Сергей, немного углубляя каменным ножом ковш – примитивное подобие деревянного половника.
– Салат «Беломорский» из водорослей с брусникой под грибным соусом, копченая рыбка по-раздолбайски, фаршированная ламинарией и ежиной икрой, отварные мидии и голубичный компот с таежными травами на десерт.
– Великолепно!
Ольге нравилось изобретать новые блюда из обильных, но не слишком разнообразных даров северной природы, комбинируя их в самых причудливых сочетаниях. И, кажется, за все время эксперимента она ни разу не повторилась в меню.
* * *
Сергей был из породы людей, предпочитавших не начинать несколько дел одновременно, а, только до конца разобравшись с одним, браться за следующее. Поэтому лишь после того, как их с Ольгой совместными усилиями была решена первая загадка, он открыл второй файл – и сразу же облегченно выдохнул.
Никаких издевательств над мозгом программиста в этот раз не предвиделось. Код был написан на классическом «Си» 8 8 C (Си) – язык программирования, разработанный Деннисом Ритчи в 1969—1973 годах. Синтаксис языка лег в основу многих современных языков программирования; в «чистом» виде в настоящее время используется редко.
, а его структура – безупречна, логична и в то же время предельно проста для понимания. Однако уже со второй страницы стали попадаться вставки на ассемблере 9 9 Язык ассемблера – машинно-ориентированный язык программирования, каждая из команд которого имеет прямое соответствие с командой процессора. По этой причине, не бывает никакого «универсального» ассемблера: сколько разных процессоров – столько и разных языков. В этом его отличие от языков высокого уровня – таких, как C, C++, Java и пр.: программа, единожды написанная на последних, теоретически может быть переведена в машинный код любого процессора.
. Именно они застали Сергея врасплох. Ассемблер – язык хитрый: его программисты используют, когда возникает необходимость напрямую обратиться к «железу» компьютера. Не знать системы команд процессора, для которого писалась программа – значит, не понять в коде ни байта.
Мнемонические 10 10 Мнемонический код – буквенное обозначение цифровой команды процессора, делающее программу на ассемблере более читаемой (по сравнению с машинным кодом).
обозначения команд неведомой системы, выстроенные в ровные столбцы, мелькали перед глазами Сергея. Хотя ему приходилось иметь дело с написанием драйверов для различных устройств и микроконтроллеров, по всему выходило, что именно этот процессор ему незнаком. Прежде всего, команд было непривычно много: Сергей насчитал их более трехсот, а ряд косвенных признаков говорил о том, что на самом деле их куда больше. Он ощутил себя Шампольоном перед Розеттским камнем, сопоставляющим греческий текст с таинственными египетскими значками и пытавшимся найти хоть какие-то ключи, чтобы, уцепившись за них, шаг за шагом расшифровать неизвестную письменность.
Но для начала следовало полностью разобраться с кодом на «Си». К счастью, названия функций не восходили к древнеисландским корням, чего так опасался Сергей после решения первой задачи, а оперировали простыми английскими словами.
Поставив «заглушки» на место ассемблерных вставок, Сергей прогонял код через отладчик раз за разом, экспериментируя со значением множества переменных: во всех случаях выполнение программы заканчивалось вызовом функции earthquake_in_guatemala 11 11 Землетрясение в Гватемале (англ.)
. Прошла уже неделя, но ничего определенного о других возможностях кода Сергей сказать по-прежнему не мог.
– Ну, как успехи? – спросила Ольга над самым ухом Сергея, бесшумно подкравшись сзади и приобняв за плечи.
Читать дальше