Начну я этот топик, пожалуй, с этой картинки:
Хочу познакомить демомейкеров с такой тулзой, как 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 для спектрума :-).
Я чуть не забыл про пример кода.
Шучу, это далеко не то, что я хотел показать.
Примеры:
1. «Hello, world» для Windows: КЛАЦ
2. «Hello, world» для DOS: КЛИК
3. Бутлоадер на Wct (выводит Wct One Love): ЖМЯК
4. «Матрица» на Wct (падающие букафки): ТУТ
Для многих кодинг на Wct может показаться таким:
Но на самом деле всё гораздо проще.
Для процессора i8086 есть специальная ТАБЛИЦА.
Для архитектуры x86 тоже есть ТАБЛИЦА
Если вы хотите посмотреть вышеприведённые примеры в действии, то просто вставьте исходный код в текстовое поле ОНЛАЙН КОМПИЛЯТОРА, и запустите…
Я пользуюсь Wct уже на протяжении года, и всем доволен. И Вам рекомендую. :-)
Так как кодить демы под спектрум на вцт не очень удобно, я пишу специальную тулзу для генерирования TRD образа с Wct кодом, непосредственно.
Также, присутствует таблица прерываний для биос-а — ЖМИ.
Бывало, писал я на Wct и не только под комплуктеры ваши…
Ах да, результат работы бутлоадера:
А также, хочу продемонстрировать скорость Wct:
На данный момент, вцт я использую для критических участков кода и для написания демки. И вам рекомендую!
Напоследок, я хотел бы показать вам видео про кодинг на Wct.
Я не знаю, какое кол-во народа, сидящего на Хабре знает о демосцене, но я рискну и выложу эту статью.
Спасибо за то, что осилили этот текст.
Если аудитория Хабра одобрит Wct и захочет попробовать его — пожалуйста, отпишитесь в комментариях, тогда я и туториал по кодингу демы для спектрума выложить рад буду.
Если есть какие-либо вопросы, пишите в комментариях, я отвечу!
В скором времени выложу интерпретатор Wct и глобальное обновление компилятора, включающее в себя кучу плюшек.
Всем хорошего кода и отличного настроения! Пока-пока!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (7)
mwizard
29.08.2015 00:36+2вцт я использую для критических участков кода
Пожалуйста, продемонстрируйте, как вы встраиваете «wct» во что-либо другое. Линковка с объектным файлом, или инлайны в стиле паскаля, или альтернатива__asm dd
.
Ваши программы всегда работают верно с первого раза, поэтому вы их не отлаживаете? Как отладить программу на «wct»?
mwizard
29.08.2015 00:41+1Вы утверждаете, что год пишете на «wct», всем довольны. Пожалуйста, выложите коды того, что вы за этот год написали, потому что в «примерах» у вас сплошные хеллоуворлды и прощая примитивщина. Я надеюсь, что исходники у вас не закрыты NDA?
mwizard
29.08.2015 00:45+4Вот это — github.com/Mihip/Wct/blob/master/source/linux/source.wct — после приведения в бинарный вид, утверждает, что оно на самом деле запаковано UPX. Вы писали его на «wct» сразу запакованным? Зачем вы заменили «UPX!» на «WCT!»?
olegkrasnov
29.08.2015 01:14+3Чем оно лучше ассемблера?
pfemidi
29.08.2015 01:49— Гоги, кто лучше, грузины или армяне?
— Грузины!
— А чем?
— Чем армяне!
Вот wct наверное этим же и лучше, чем ассемблер. В ассемблере хоть по-человечески всё, понятно, а тут очередной brainfuck, только с x86 не переносимый никуда.
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 как-то нехорошо по отношению к читателям. Да и называть табличную замену символов компиляцией слишком громко. И все-таки есть люди, которые плюсуют эти статьи, что, видимо, и побуждает автора писать дальше. Иногда интересуются «за что минусы?», а у меня такой риторический вопрос «за что плюсы?».
mwizard