Всем привет! Я решил написать комплятор самодельного ЯВУ под Win32. За основу языка беру пока C. Компиляция будет производиться прямо в машинный код, на выходе будем получать консольное или графическое приложение Win32. У меня уже есть неплохой опыт трансляции C-подобного языка в ассемблерный код (MASM), программы на выходе получались работоспособные. Подробнее о моих наработках можно посмотреть здесь: http://homez.h19.ru/translation.php (не сочтите это рекламой, смотрите только те из вас, кому интересно). Думаю, с компиляцией прямо в машинный код справлюсь, хотя это, конечно, потребует больше сил, и здесь для меня еще пока много неизвестного. Еще скажу, что какой-то материальный outcome не планируется, хотя кто знает, к чему все это может привести. Если удастся написать полноценный компилятор, не исключаю возможность написания рабочих программ и в нем (ну а как бы тогда зачем я за это и взялся?). Планируется с легкостью использовать в компилируемых программах Win32 API (скорее всего, как в Delphi, подключение библиотек импорта не планируется). Конечно, придется поработать и runtime-библиотекой, чтобы каких-то результатов в использовании этого компилятора можно было добиться. Ищу единомышленника/напарника/соратника (или нескольких), который бы помог в решении многих вопросов. Скорее всего, этот человек должен хорошо знать C++ и программирование Windows-приложений с использованием Win32 API. Большим плюсом будет знание ассемблера, умение написать на нем хотя бы простенькую программку под Windows. Если же кто-то сумеет меня убедить в том, что лучше ориентировать компилятор на платформу .NET, чтобы с легкостью использовать весь доступный там API, рассмотрю и такой вариант при весомой аргументации (я практически не писал .NET-приложений, поэтому сразу выбрал вариант в машинный код). Даже могу рассмотреть вариант написания компилятора, могущего создавать выходной код и под Win32, и под .NET. Пока что у меня происходит только синтаксический анализ очень скромного подмножества языка, код еще не пишется даже промежуточный, поэтому можно легко сделать любую переориентацию, не жалея о пущенном на ветер коде). Если же найдется такой отчаянный человек, который предложит писать раскручивающийся (bootstrapping) компилятор, с радостью пожму ему руку (мне сегодня приснилось, что я снова в институте, и нам начали читать курс именно про то, как написать раскручивающийся компилятор. Может, сон в руку? Теперь, собственно, о вопросах, которые были у меня в голове, когда открывал эту тему. Было бы интересно написать не клон C/С++, а, например, добавить в язык несколько встроенных фич, которые в C++ реализуются либо с использованием каких-либо библиотек, либо навороченным программированием. Например, встроенные динамические массивы, возможно, еще какие-нибудь встроенные типы коллекций (словари, множества и т.д.). Здесь есть у меня взгляд в сторону Python, например, в этом языке есть такая клевая штука как comprehension. Одной головой мне на такие темы думать сложно. Итак, откликнется ли кто-нибудь, или ну его фтопку?
Си - это не ЯВУ. Это пол шага от ассемблера. Сегодня ЯВУ полагается иметь динамическую типизацию, дак-тайпинг, гц, и прочие паттерн-матчинги.
_DEN_, дайте ссылку для подтверждения своих слов. Меня особенно впечатлило про динамическую типизацию. То есть, ни C#, ни Java, ни F#, по-вашему, не относятся к ЯВУ?
Zemoh А про паттерн-матчинг, то есть, вас не впечатлило? Речь не о том, что это должно быть у всех. Речь о том, что "высокий" уровень - это уже давно не плоский Си.
_DEN_ Бред. Между языками ассемблера и языками высокого уровня существует одно принципиальнейшее различие: абсолютно любой ассемблер напрямую отражает архитектуру и систему команд того или иного процессора, а абсолютно любой язык высокого уровня эту самую архитектуру и систему команд скрывает. Именно этот критерий служит для определения уровня языка. Типизация же и всё прочее тут никакой роли не играют.
Я же написал, что не собираюсь делать просто клон C/С++, что хотелось бы добавить в язык, я выше написал вкратце. К тому же, этот список еще может пополниться.
SII Да щас. Камень легко может иметь совершенно другой набор реально выполняющихся команд, нежели те, что ты пишешь в асме. А Си имеет достаточно завязок на архитектуру, таких как размер и содержимое указателя на данные, размер и содержимое указателя на функции, размер int-а, little/big endian, размер и структура float/double, и т.д.
Так потому си-конпелятор и точитца под конкретную архитектуру проца, которую абсолютно не нужно знать погромисту на си, очевидно же.
Не слушайте всех этих нубов , Это обсулютно не практичные люди им лишь бы холифара и пофлудить, ну и на десерт как самое главное вас потролить. Лучше всего пишите MASM, да именно его... Клерк будет вам благодарин! )) На самом деле это интересная идея, написать МАСМ с возможностью мутации(пермутации, обфускации, полиморфинга и прочиё лабуды ) . Кодес будет восстребован! Ну и конечно интересен, особенно возможностью компиляции старых сорс из под масма на новый лад.
MMIX Так идея в другом , делать мутацию на уровне компиляции, то и есть : 1)каждый скомпиленый семпел уникален. 2) Slon очень приметивный обфускатор. Вообщем цель немного другая. А автор хорошо разберется что куда
shchetinin это да, годная штука. в принципе я думаю можно и щас масм какой он есть допилить, макросами допустим делать обфускацию на препроцессоре, для каждой траснлясции - разная связка макросов. имхо и надо пилить готовое, а не велосипеды изобретать. вот автор вначале говорит - писал транслятор с -->> масм. зачем, если микрософтовский компилер с/с++ уже делает то же самое и довольно давно? так и тут. более я думаю что масм юзают многие, можно сделать так чтобы макросы добавлялись от разных кодеров етц. короче велосипеды нужны если только для знания и для себя, понять как оно робит; для юзания же надо другие решения, не тебе одному итнресеныя.
MMIX Идея нынешнего была - не делать клон C или C++, а написать и много своего. Просто базируюcь на этом языке, так как он мне ближе всего. По поводу же того, что я делал когда-то трансляцию языка типа C в MASM - я делал для двух студенческих работ, на которых удалось отбить некоторую денежку. Если бы Вы сходили по ссылке, которую я привел в начале темы, Вы бы это поняли. Подозреваю, что если бы эти работы тогда не попались на моем пути, я бы до этой темы и не дошел бы. P.S. Так никто мне и не объяснил ничего про морфоасм и мутации, хотя я вопрос задавал.