Обратимый ассемблер BLACK, обратимый эмулятор Black Emulator и обратимый отладчик Digital Coin Debugger проектировались для написания майнеров цифровых валют. Название BLACK произведено из английского слова BACK, означающего «обратно», обратное выполнение программ в данном случае. Майнер цифровой валюты — это программа или специализированное устройство, добывающее цифровую валюту решением криптографической задачи, как правило – решением полным перебором. Так как решение задач перебором не интеллектуально, то в проекте Black Emulator делается попытка решать эти задачи без перебора, обратным выводом и алгоритмами искусственного интеллекта. Обратный вывод аргументов из результата функции можно делать с помощью обратных вычислений. Обратимые вычисления – это выполнение вычислений в обе стороны, прямо и обратно, от аргументов – к результату и от результата – к аргументам. Логически – обратимые вычисления основаны на обратимых программах, а не на обратимых схемах.
Обратимая программа – это программа, которая может выполнятся в обе стороны, сверху - вниз и снизу - вверх. При выполнении сверху – вниз программа берёт аргументы и по ним считает результат. При обратном выполнении снизу – вверх программа берёт результат и по нему считает аргументы. Более подробно о принципах архитектуры обратимых вычислений BLACK написано в следующем документе.
Обратимый язык программирования – это такой язык, написанные на котором программы – обратимы, то есть могут выполнятся как прямо, так и обратно, как сверху - вниз, так и снизу – вверх. Язык BLACK Assembler является обратимым ассемблером. Обратимое программирование же - это написание обратимых программ.
Обратимый эмулятор – это эмулятор обратимого процессора, который выполняет обратимые программы на обычном необратимом процессоре. Так работает обратимый эмулятор Black Emulator. По сути, этот обратимый эмулятор есть обратимым интерпретатором ассемблера.
Обратимый интерпретатор - это интерпретатор, который может выполнять программы прямо и обратно, сверху - вниз и снизу - вверх. Обратимый отладчик же – это отладчик, поддерживающий прямое и обратное выполнение программ, получение результата по аргументам функции и получение аргументов функции по её результатам. Он, кроме всего прочего, имеет команду «выполнить программу обратно». Ниже приводятся скриншоты обратимого отладчика Digital Coin Debugger.
Обратимый отладчик Digital Coin Debugger может загружать .NET сборки с обратимыми программами. При старте его окна заполнены случайно сгенерированным кодом и данными, для лёгкого начала использования пользователем без написания обратимой программы. Команды отладчику отдаются через всплывающие по кликам на окна контекстным меню. Для наиболее частых команд предусмотрены горячие клавиши. Отладчик позволяет прокручивать код и данные, менять режимы отображения данных и регистров, типа десятичных без знаковых слов, шестнадцатеричных байтов, десятичных знаковых полуслов, ASCII, UNICODE и так далее. Digital Coin Debugger поддерживает пошаговое выполнение обратимых программ: шаг с заходом, шаг с обходом, выполнять до возврата из функции, выполнять до конца функции, выполнять обратно.
Элементом искусственного интеллекта этого отладчика есть его общение с оператором на английском языке. Digital Coin Debugger проговаривает приятным женским голосом все свои сообщения, подтверждает фразами действия пользователя. Интерфейс не содержит таких вредных цветов, как синий и фиолетовый, которые оказывают подавляющее воздействие на интеллект и организм оператора.
Обратимый ассемблер BLACK следует идеям RISC архитектур инструкций. Он имеет всего лишь 100 простых команды, которые легко понять и заучить. Записи команд имеют понятные длинные мнемоники и скобки перед аргументами. Запись каждого оператора заканчивается точкой с запятой. Синтаксис команд похож на вызовы методов языков С++, Java, C#. По сути, каждая команда ассемблера BLACK является вызовом метода C#, который добавляет её в список инструкций эмулятора. Поэтому программы на BLACK ассемблере могут встраиваться в язык C# и писаться в среде Visual Studio. Из-за этого получается, что ассемблер расширен возможностями C#, например, можно использовать именованные переменные и константы, математические выражения языка C# в коде на BLACK ассемблере. Программы на BLACK ассемблере компилируются в .NET сборки DLL нажатием трёх кнопок Ctrl + Shift + B в Visual Studio. При этом достаточно бесплатной студии Visual Studio Community 2015.
Обратимый BLACK ассемблер поддерживает целую и без знаковую целую арифметики, побитовые операции, операции пересылки данных между регистрами, между памятью, операции работы со стеком, операции сравнения знаковых и без знаковых чисел, условные и безусловные переходы, вызовы подпрограмм. Программы на BLACK ассемблере могут выполняться как прямо, так и обратно. Это – обратимый язык программирования, обратимый ассемблер.
Обратимый эмулятор Black Emulator реализует прямое и обратное выполнение программ, обратимые вычисления на необратимом процессоре компьютера. Эмулятор позволяет задавать начальные или конечные значения регистров и памяти программы, список инструкций для выполнения, экспортирует методы прямого и обратного выполнения добавленного кода. Для обратного выполнения программы на эмуляторе нужно переслать эмулятору код программы, установить конечные значения регистров и памяти и вызвать метод «выполнить обратно». Всё, программа выполнена обратно, снизу – вверх. Black Emulator имитирует обратимый процессор с 32-битной адресацией памяти и обратимым ассемблером BLACK, как интерпретируемым языком процессора. Регистры и память процессора имитируются как массивы слов и байтов, в которые можно писать и из которых можно читать значения.
Обратимый ассемблер BLACK документирован на русском языке. При начале записи оператора ассемблера всплывает русская подсказка с описанием и синтаксисом команды и её аргументов. Также, на русском документирован и обратимый эмулятор Black Emulator. Digital Coin Debugger же имеет простой интерфейс и не нуждается в документации.
Скачать Black Emulator и Digital Coin Debugger можно скачать из папки внизу страницы. В архивах и исходники, и исполняемые файлы. Состояние проекта - бета версия.
Применения обратных вычислений для решения ограничений и автоматического планирования действий обсуждаются на одноимённой страничке, переход на страничку - сверху справа.
Авторы: Дмитрий Таломир (псевдоним) из Украины и другие. Интеллектуальное, системное и сетевое программирование, настольные приложения для Windows, игровые и веб-боты, мониторинг и управление бот-фермами, шифрование, трансляция программного кода, алгоритмы искусственного интеллекта, C#, ассемблеры, мёртвый опыт программирования на Java, Visual Basic, Python, C, C++, PHP, Perl, AWK, Pascal, Basic, Fortran.