https://www.cl.cam.ac.uk/~sd601/papers/mov.pdf - доказательство её тюринг полноты https://github.com/xoreaxeaxeax/movfuscator - Собственно, реализация обфускатора, который заменяет обычный код на код, в котором есть ТОЛЬКО инструкции mov https://news.ycombinator.com/item?id=9751312 - ещё ссылка Собственно, дискасс
problemaker, Ну и зачем вам это ? Обфускация - это чистая сигнатура, думаю авер будет смеяться с такой генерации.
problemaker, А что именно вас удивило, авторы используют пересылки данных для элементарных логических операций. Через это вы косинус не вычислите, так же как и простое деление сделать не сможите, ибо у проца гранулярность байтовая, через пересылку данных битами манипулировать нельзя. А что касается этих тьюрингов - имхо бред полный и древний как говно мамонта. Во времена Тьюринга небыло нормальных вычислительных систем, зачем вспоминать динозавров.
Indy_, а если принять байт за бит, при этом условно ограничить диапазон значений до {0, 1}, при этом интерпретировать полученную байтовую последовательность, как последовательность бит?
Полнота по Тьюрингу означает, что на таком языке можно написать все, что угодно. Т.е. используя одну лишь инструкцию mov, можно написать любую программу для x86.
rmn, Этот критерий был составлен когда небыло CPU. Для любого из современных это смысла не имеет. Понятие вымерло как динозавры.
Смысл имеет, если у тебя есть ограниченный набор инструкций и нужно решить ими какую-то задачу (абстрагируемся по полной). Доказать, что этим набором инструкций в принципе можно решить эту задачу намного проще, чем пытаться ее решить напрямую.
rmn, Практически пример приведите. Как игры разума можно любую бредовую задачу придумать. Вот только какой в этом смысл.
Indy_, Ну, например, захотел ты написать протектор на базе вм и стать богатым и знаменитым. Какой минимальный набор инструкций должна иметь твоя вм? Тест этого набора на тьюринг-полноту будет достаточным (и необходимым); не нужно будет пытаться завиртуалить (на этапе проектирования) каждую из 2к возможных инструкций x86-64.
А ветвления как? Какая-то странная тьюринг полнота происходит раз даже квадратное уравнение не решить