...

понедельник, 29 декабря 2014 г.

Assembler в 30 строк на Excel

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



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

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

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


Библиография:

http://www.komal.hu/verseny/feladat.cgi?a=feladat&f=I358&l=en задание олимпиады

http://hackaday.io/project/3680-exembler собственно проект. Почти пустой, но там можно скачать экселевский файлик на венгерском

http://hackaday.com/2014/12/25/writing-a-virtual-machine-in-excel/ новость на Хакдее

http://www.dropbox.com/s/xjk5sqtarsgvnex/exembler_v0.2.xlsx?dl=0 (возможно криво) переведенная таблица


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий