Эзотерический поискСтатьи

verOS - что?

Автор:

Изображение
В современных технологиях 3D-графики с поддержкой на аппаратном уровне принято использовать так называемые шейдеры, позволяющие внедрять собственный алгоритм в любые низкоуровневые процессы. Тем самым, у программиста появляется возможность не только пользоваться тем потенциалом, который предлагает производитель. Но и управлять вычислениями в самых узких местах.
Про внедрение собственного кода в любые системные процессы любой операционной системы я задумывался довольно давно.

Взялся за реализацию собственной концепции OS и на данном этапе разрабатываю Windows-оболочку для запуска приложений.
На ресурсе располагается он-лайн редактор Hex-дампа с дизассемблером, а также исходный текст эмулятора OS с минимальной функциональностью как первый beta-шаг.

Цель проекта в том, чтобы все популярные способы скриптирования (Java, Flash и т.д.) в качестве эксперимента попробовать заменить x86-скриптам.
Так, x86-скрипт представляется обычным x86-кодом и по-этому может работать с максимальной скоростью. Однако от обычного x86-кода он отличается:
1) Отсутствуют операции ветвления, но имеется механизм разбиения на отдельные условные блоки и циклы;
2) Отсутствуют операции вызова процедур, вместо которых используются особые обращения к памяти;
3) Отсутствует возможность обращения к произвольным ячейкам памяти с целью простой защиты от сбоев.

Говоря проще, x86-скрипт - обычный исполняемый x86-код, из которого исключаются все операции, которые могут привести к сбою. Остаются только вычислительные. Это сделано для:
1) Исключения возможности запуска вредоносного кода;
2) Достижения возможности писать различные DSP-фильтры или видео-фильтры прямо машинным кодом.

Так, допустим, в VirtualDub нам понадобилось написать свой фильтр. Однако сами этого сделать не можем по причинам:
1) Не владеем языками программирования;
2) Имеются иные причины.
Тогда заходим на специальный сайт и скачиваем VirtualDub-фильтр "x86-универсал", который сам по-себе ничего не делает. Затем на страничке он-лайн компилятора описываем модель фильтрации через формулы, а затем скачиваем получившийся x86-скрипт. Или выбираем готовый скрипт одного из пользователей.
Указываем путь к скрипту в фильтре "универсал", тот его анализирует и компилирует, а затем передаёт управление.

Таким образом, можно разработать фильтр-оболочку к любой программе (WinAMP, XM-Play, VirtualDub и т.д.) и загружать туда x86-скрипты любой сложности и функциональности без риска вызвать сбой или вирусного поражения.

Приветствую всех, кто может помочь развитию концепции и обогащению проекта.



Краткое введение в общие принципы

От автора

Современные средства разработки или дизайна без возможности скриптирования и автоматизации различных процессов, включая интерактивные события взаимодействия с пользователем, не могут считаться полноценными интегрированными средами.

Множество Web-ресурсов строятся с использованием Java-апплетов, Flash или Java_Script'ов. Без которых невозможно представить любую страницу с динамично изменяющимися данными и элементарной мгновенной проверки правильности заполнения форм.
Те же Web-ресурсы различных 3D-галлерей и музеев, построенных на основе VRML-скриптов, помогают погрузиться в просторы виртуальных миров.
Более масштабные проекты, как сетевые игры, позволяют включать в обстановку собственных ботов, подчиняющихся алгоритмам, описанным на языках Squirel или Lua-скриптах.

Однако, все эти технологии подразумевают управление на самом высоком уровне и не имеют механизмов контроля за процессами более низких уровней.

Введение

Иногда возникает необходимость управления тем или иным процессом на самом низком, элементарном уровне. Например, произвести специфическую DSP-фильтрацию аудио потока или обработку изображения видео потока в режиме реального времени. Часто такая возможность имеется только у тех, кто более-менее владеет программированием и способен разобраться с SDK к нужной программе.
Остальным остаётся довольствоваться лишь набором имеющихся готовых разработок и плагинов разных программистов. Так-как из-за высокой критичности к производительности всей системы в режиме реального времени практически невозможно использовать какие-либо скрипты.
Тем самым, в качестве эксперимента, появилась попытка использовать сам машинный x86-код в качестве байт-кода некоего x86-скрипт-языка. Говоря иначе, описать шейдер прямо инструкциями процессора.

Машинный код x86-процессоров в наши дни является самым распространённым и производительным на современных PC и никакой байт-код CIL или Java-машины не сравнится с производительностью чистого x86-кода.
По-этому за основу x86-скриптов был выбран именно машинный x86-код, чтобы значительная часть операций скриптов выполнялась самим процессором как есть. Однако, чтобы максимально предотвратить возможность возникновения некоторых проблем или явления вредоносного кода, был разработан ряд основополагающих правил:


Например, наглядное представление о x86-скрипте можно получить изучив следующий скрин-шот:

15 сентября 2012