Новости Linux в 366 байтах. Конкурс обфусцированного C показал, на что способна простота

NewsMaker

I'm just a script
Премиум
28,113
46
8 Ноя 2022
Один конкурсный эксперимент неожиданно вышел далеко за рамки развлечения.

<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:800/450;margin-bottom:2rem;overflow:hidden">
l2g3rzog2naozqvw45046eikkbgmkiv9.jpg

Даже намеренно запутанный код иногда приносит практическую пользу, и результаты 29-го Международного конкурса обфусцированного кода на C (IOCCC) показали такой редкий случай. Жюри выбрало 23 работы, а одной из самых заметных стал эмулятор архитектуры Subleq, который Адриан Кейбл уместил всего в 366 байтах.

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

Проект Eternal Software Initiative ранее уже создал для Subleq компилятор C на базе LLVM, перенёс Linux и добавил библиотеки для C и C++. Миниатюрный эмулятор Кейбла же показал цветное множество Мандельброта, игру Pong, Linux и несколько приложений. Для вывода графики программа использует SDL, но весь её основной код занимает девять строк.

Среди других победителей оказался Ник Крейг-Вуд, который написал рабочий эмулятор оригинальной Nintendo Game Boy в 66 строках C. Ещё одна его программа объединила эмуляцию Commodore 64 с языком FRACTRAN, а третья реализовала Forth и строила вращающееся изображение множества Мандельброта.

Юсукэ Эндо получил сразу три награды и довёл число своих побед в конкурсе до 23. Одна работа имитировала индикаторные лампы, подсвечивая цифры прямо в собственном исходном коде. Другая постоянно переписывала и заново собирала себя, чтобы вывести код инструмента сравнения файлов.

Самую необычную игровую механику показал Йона Улленберг. Его Pong одновременно служит программой, игровым экраном и собственным исходным кодом. После каждого нажатия клавиши программа меняет расположение символов и создаёт новую версию себя, которую нужно снова скомпилировать для следующего кадра.

Конкурс IOCCC проводят с 1984 года, а работы оценивают по изобретательности и необычному использованию языка C. Итоги конкурса показали, что намеренно непонятный код способен не только развлекать, но и демонстрировать практические идеи для эмуляции и сохранения программ.
 
Источник новости
www.securitylab.ru

Похожие темы