Ulra Risk - машины

Apr 14, 2014 13:01



Видел где-то в детстве вохищённого электронщика, он на каком-то ассемблерном форуме углядел размышелния про процессор, который ничего кроме одно команды не выполняет, при это он полный по тьюрингу. Человек долго восхищался, насколько же легко всё это из проводков и железок собрать. У меня это особых вохищений не вызвало. Ну полумал час другой, про разные способы, с одним подходом это можно сделать; с другим нельзя; с третим можно, но не очень удобно и не всё...

Копаюсь во всём этом сегодня:
http://en.potiori.com/One_instruction_set_computer.html

Соображается почему-то не так быстро. Но всё это интересно. Сделать машину которая состоит из трёх проводков или двух строк. А сколько от этого пользы и разных применений, я даже говорить не буду.

Проще всего конешно расположить в памяти специальные ячейки, которые висят по неким условным адресам и могут давать тебе результаты разных операций, типа сложения, умножения, условий и прочего. Но это всё таки несколько сложно и совсем не круто. Другие варианты интереснее: машина простая, ассемблер совсем весёлый.

Правда я пока не нашёл ещё один вариант, который сам напрашивается в голову. Приходилось видеть живые RISK процессоры, где для каждой инструкции отведены заведомо огромные 16 бит. Зато абсолютно любая инструкция может иметь два-три-несколько условных бита и менять своё поведение. Например: меняет ли или нет она условные флаги процессора, после выполнения; будет ли или нет она выполняться в зависимости от каких-либо флагов процессора. Когда каждая или почти каждая инструкция процессора имеет подобные бонусы, программы на ассемблере становятся бесподобны. Быстрее, проще, и почти не надо ветвлений. Доступно такое количество трюков, что Cisk процессор становится детским лепетом.

Я к тому что urisk процессор легко может работать на одной команде. Но на команду можно навесить точно такие флаги. Виртуальная машина станет не чуть не сложнее, а программирование для неё в несколько раз богаче. Правда у urisk инструкций вовсе нету команд, они же все одинаковые, но это вопрос тоже решаемый.

Ещё очень сильно задумался от том как сжимать код для таких машин. Например в железе сделать всё очень просто, но памяти ты потом не напасёшся вообще =)) Всё таки несколько комманд на любое простейшее дейтствие, команды одинаковые, это всё очень смушает. Вот сижу выдумываю разные хитрости, как всё это утрамбовывать в память посильнее...

up. http://mazonka.com/subleq/hsq.html
Previous post Next post
Up