Pull to refresh

Assembler в 30 строк на Excel

Reading time2 min
Views78K
В заголовке порядок слов не перепутан.



Живет в Венгрии юный программист Адам Кишш. Он участвует в чем-то типа онлайн-олимпиады KöMaL. Для решения заданий по информатике предлагается использовать несколько обычных языков программирования: С, С++, Python и некоторые другие. В одном из заданий требовалось написать Сапер и бота для игры в него. Такая задача очень легко решается средствами табличного процессора — того же Excel, например, и пачки макросов. Однако же, макросы использовать нельзя. Адам выкрутился необычным способом: реализовал в книге Excel простенький виртуальный компьютер, который программируется на Ассемблере — Excembler.

Формально, это подходит под требования олимпиады. Макросы не используются, только встроенные логические функции. Файл «компьютера» доступен для скачивания, но он на венгерском. Гугл транслейт плюс здравый смысл вроде позволили разобраться. Реализован некий простейший придуманный ассемблер. Возможно, кто-то из читателей укажет прототип. Вкратце опишу, что получилось. На первом листе собственно код программы и результат выполнения. В цветных столбцах состояние регистров перед выполнением соответствующей операции, слева код и аргументы. Смысл столбца OUT-assist до конца не ясен, похоже там отслеживаются изменения регистра результата. Лист Out — результаты, лист Data — входные данные. Их можно адресовать по номеру строки и столбца и загружать в регистр LD командой LOAD. Command set — справка по системе команд. Надеюсь, что перевел правильно. Examples — несколько примеров. Было не вполне понятно, откуда они загружают данные. Надо смотреть непосредственно по коду. Например, LOAD 2,3 — это запрос ячейки Data!B3, если ничего не напутал.

Вывод: интересная игрушка на поиграться вечерком

Библиография:
www.komal.hu/verseny/feladat.cgi?a=feladat&f=I358&l=en задание олимпиады
hackaday.io/project/3680-exembler собственно проект. Почти пустой, но там можно скачать экселевский файлик на венгерском
hackaday.com/2014/12/25/writing-a-virtual-machine-in-excel новость на Хакдее
www.dropbox.com/s/xjk5sqtarsgvnex/exembler_v0.2.xlsx?dl=0 (возможно криво) переведенная таблица
Tags:
Hubs:
Total votes 74: ↑70 and ↓4+66
Comments29

Articles