Всем доброго времени суток!
Начну я этот топик, пожалуй, с этой картинки:

image

Хочу познакомить демомейкеров с такой тулзой, как Wct — «Wild Coding Tool», ну или же Word oCTal (на самом деле уже должно было быть Word hEX — Wex, но как-то не прижилось).


Начнём с объяснения значения слова «демосцена».

Демосцена — это субкультура и направление компьютерного искусства, главной особенностью которого является выстраивание сюжетного видеоряда, создаваемого в реальном времени компьютером, по принципу работы компьютерных игр. Таким образом, демо является симбиозом программирования и искусства. Демосцена — киберкультура, существующая в Юзнете, Фидонете и Интернете.


А теперь, непосредственно, приступим к изучению Wct.

— Что это такое?
Это — система счисления, состоящая из 16-и букв, как и hex.

Wct — система счисления, которая состоит из 16-и символов (A B C D E F G H I J K L M N P O), притом «O» здесь идёт после «P».

В основном используется для программирования в машинных кодах, для написания хакерских и мелких программ (под DOS легче писать программы), а также для хакинга. Но большие программы на Wct написать очень сложно.

Wct Editor — редактор машинных кодов на Wct (кроссплатформенный — для Windows & Linux). Весит около 10 кб. Большая скорость сборки программ (последний релиз Wct Editor позволяет собирать до 500 мб исходного кода в секунду. Я не думаю, что кто-то сможет на Wct написать такую большую программу, но всё же).


Я уже достаточно продолжительное время использую Wct как тулзу для кодинга (вместо ассемблера). Привык за месяц, кодить и быстрее, и удобнее. Почему не hex? Да потому что…

Цитирую сообщение моего приятеля.

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


Ещё:

Плюсы в сторону WCT:
— Удобный редактор
— Высокая производительность
— Хорошая документация
— Онлайн-компилятор
— Библиотеки для работы с I/O,Files,Sockets
— Библиотеки для работы со строками/математикой
— Идеально подходит для изучения структуры машинного кода, архитектуры процессора.Хорош в целях обучения.
— Хорошо подходит для написания участков кода где скорость ОЧЕНЬ критична.

WCT в подавляющем количестве случаев нужен для того, чтобы понять как работает процессор, и для того, чтобы понять архитектуру ОС(системные вызовы, аппаратные прерывания итп).МОЖЕТ пригодиться тем, кто занимается reverse engineering-ом и системным программистам
Еще 1 плюс WCT — с него легко перепрыгнуть на чистый HEX
Читать машинный код для чела, который знает WCT будет как 2 байта переслать


Да, у Wct реально много плюсов и отличий от hex-a. Но сейчас о другом.

Wct имеет билдер под Linux и Windows, а также онлайн компилятор (о котором я расскажу позднее).
Сейчас я пишу демку под ZX-Spectrum на Wct, после чего выложу в открытый доступ документацию по созданию демок на Wct для спектрума :-).

Я чуть не забыл про пример кода.

image

Шучу, это далеко не то, что я хотел показать.

Примеры:

1. «Hello, world» для Windows: КЛАЦ
2. «Hello, world» для DOS: КЛИК
3. Бутлоадер на Wct (выводит Wct One Love): ЖМЯК
4. «Матрица» на Wct (падающие букафки): ТУТ

Для многих кодинг на Wct может показаться таким:

image

Но на самом деле всё гораздо проще.

Для процессора i8086 есть специальная ТАБЛИЦА.
Для архитектуры x86 тоже есть ТАБЛИЦА

Если вы хотите посмотреть вышеприведённые примеры в действии, то просто вставьте исходный код в текстовое поле ОНЛАЙН КОМПИЛЯТОРА, и запустите…

image

Я пользуюсь Wct уже на протяжении года, и всем доволен. И Вам рекомендую. :-)
Так как кодить демы под спектрум на вцт не очень удобно, я пишу специальную тулзу для генерирования TRD образа с Wct кодом, непосредственно.

Также, присутствует таблица прерываний для биос-а — ЖМИ.

Бывало, писал я на Wct и не только под комплуктеры ваши…

image

Ах да, результат работы бутлоадера:

image

А также, хочу продемонстрировать скорость Wct:

image

На данный момент, вцт я использую для критических участков кода и для написания демки. И вам рекомендую!

Напоследок, я хотел бы показать вам видео про кодинг на Wct.



Я не знаю, какое кол-во народа, сидящего на Хабре знает о демосцене, но я рискну и выложу эту статью.

Спасибо за то, что осилили этот текст.
Если аудитория Хабра одобрит Wct и захочет попробовать его — пожалуйста, отпишитесь в комментариях, тогда я и туториал по кодингу демы для спектрума выложить рад буду.
Если есть какие-либо вопросы, пишите в комментариях, я отвечу!


В скором времени выложу интерпретатор Wct и глобальное обновление компилятора, включающее в себя кучу плюшек.
Всем хорошего кода и отличного настроения! Пока-пока!

image
Выкладывать литературу по Wct?

Проголосовало 48 человек. Воздержалось 19 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Комментарии (7)


  1. mwizard
    29.08.2015 00:31
    +3

    image


  1. mwizard
    29.08.2015 00:36
    +2

    вцт я использую для критических участков кода
    Пожалуйста, продемонстрируйте, как вы встраиваете «wct» во что-либо другое. Линковка с объектным файлом, или инлайны в стиле паскаля, или альтернатива __asm dd.

    Ваши программы всегда работают верно с первого раза, поэтому вы их не отлаживаете? Как отладить программу на «wct»?


  1. mwizard
    29.08.2015 00:41
    +1

    Вы утверждаете, что год пишете на «wct», всем довольны. Пожалуйста, выложите коды того, что вы за этот год написали, потому что в «примерах» у вас сплошные хеллоуворлды и прощая примитивщина. Я надеюсь, что исходники у вас не закрыты NDA?


  1. mwizard
    29.08.2015 00:45
    +4

    Вот это — github.com/Mihip/Wct/blob/master/source/linux/source.wct — после приведения в бинарный вид, утверждает, что оно на самом деле запаковано UPX. Вы писали его на «wct» сразу запакованным? Зачем вы заменили «UPX!» на «WCT!»?


  1. olegkrasnov
    29.08.2015 01:14
    +3

    Чем оно лучше ассемблера?


    1. pfemidi
      29.08.2015 01:49

      — Гоги, кто лучше, грузины или армяне?
      — Грузины!
      — А чем?
      — Чем армяне!


      Вот wct наверное этим же и лучше, чем ассемблер. В ассемблере хоть по-человечески всё, понятно, а тут очередной brainfuck, только с x86 не переносимый никуда.


  1. michael_vostrikov
    29.08.2015 08:34

    Файл для Windows после перевода в бинарный вид содержит программу, запакованную UPX. Строки «UPX0», «UPX1» и «3.91 UPX!» затерты нулями. Предполагаю, что где-то в файле добавлен код, который их восстанавливает. После распаковки получается файл, судя по секциям CODE, DATA, BSS написанный на Delphi или чем-то подобном. Кстати, на запакованную версию ругаются антивирусы. Примеры из статьи этой программой не компилируются, все заканчивается сообщением «Runtime error 6 at AAEAEDIB».

    Примеров создания демосцен в статье нет, сплошные helloworld-ы. Писать напрямую в двоичных кодах и выдавать это за скорость Wct как-то нехорошо по отношению к читателям. Да и называть табличную замену символов компиляцией слишком громко. И все-таки есть люди, которые плюсуют эти статьи, что, видимо, и побуждает автора писать дальше. Иногда интересуются «за что минусы?», а у меня такой риторический вопрос «за что плюсы?».