Проект компилятора, ищу соратника

Тема в разделе "WASM.PROJECTS", создана пользователем Zemoh, 28 фев 2012.

  1. Zemoh

    Zemoh New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2012
    Сообщения:
    16
    Всем привет!

    Я решил написать комплятор самодельного ЯВУ под 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. Одной головой мне на такие темы думать сложно.

    Итак, откликнется ли кто-нибудь, или ну его фтопку? :)
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Си - это не ЯВУ. Это пол шага от ассемблера. Сегодня ЯВУ полагается иметь динамическую типизацию, дак-тайпинг, гц, и прочие паттерн-матчинги.
     
  3. Zemoh

    Zemoh New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2012
    Сообщения:
    16
    _DEN_, дайте ссылку для подтверждения своих слов. Меня особенно впечатлило про динамическую типизацию. То есть, ни C#, ни Java, ни F#, по-вашему, не относятся к ЯВУ?:)
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Zemoh
    А про паттерн-матчинг, то есть, вас не впечатлило? Речь не о том, что это должно быть у всех. Речь о том, что "высокий" уровень - это уже давно не плоский Си.
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    _DEN_
    Бред. Между языками ассемблера и языками высокого уровня существует одно принципиальнейшее различие: абсолютно любой ассемблер напрямую отражает архитектуру и систему команд того или иного процессора, а абсолютно любой язык высокого уровня эту самую архитектуру и систему команд скрывает. Именно этот критерий служит для определения уровня языка. Типизация же и всё прочее тут никакой роли не играют.
     
  6. Zemoh

    Zemoh New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2012
    Сообщения:
    16
    Я же написал, что не собираюсь делать просто клон C/С++, что хотелось бы добавить в язык, я выше написал вкратце. К тому же, этот список еще может пополниться.
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    SII
    Да щас. Камень легко может иметь совершенно другой набор реально выполняющихся команд, нежели те, что ты пишешь в асме. А Си имеет достаточно завязок на архитектуру, таких как размер и содержимое указателя на данные, размер и содержимое указателя на функции, размер int-а, little/big endian, размер и структура float/double, и т.д.
     
  8. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.173
    Адрес:
    подполье
    Так потому си-конпелятор и точитца под конкретную архитектуру проца, которую абсолютно не нужно знать погромисту на си, очевидно же.
     
  9. AlexCab

    AlexCab New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    142
    Тоже когда-то хотел сделать си подобный ЯП, но сейчас увлёкся всякими ФП,МП,КП,потоками, etc.:)
     
  10. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Не слушайте всех этих нубов , Это обсулютно не практичные люди им лишь бы холифара и пофлудить, ну и на десерт как самое главное вас потролить.
    Лучше всего пишите MASM, да именно его... Клерк будет вам благодарин! ))
    На самом деле это интересная идея, написать МАСМ с возможностью мутации(пермутации, обфускации, полиморфинга и прочиё лабуды ) . Кодес будет восстребован! Ну и конечно интересен, особенно возможностью компиляции старых сорс из под масма на новый лад.
     
  11. samuraishowdown

    samuraishowdown New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2011
    Сообщения:
    70
    shchetinin +1
    ТС пиши морфоасм.
     
  12. Zemoh

    Zemoh New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2012
    Сообщения:
    16
    Это что такое?
     
  13. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    shchetinin
    На обфускацию двигатели уже есть, смотри слона последнюю статью. :)
     
  14. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    MMIX
    Так идея в другом , делать мутацию на уровне компиляции, то и есть :
    1)каждый скомпиленый семпел уникален.
    2) Slon очень приметивный обфускатор.
    Вообщем цель немного другая. А автор хорошо разберется что куда:)
     
  15. samuraishowdown

    samuraishowdown New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2011
    Сообщения:
    70
    MMIX стотью видел, двигатель - нет.
     
  16. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    shchetinin
    это да, годная штука. в принципе я думаю можно и щас масм какой он есть допилить, макросами допустим делать обфускацию на препроцессоре, для каждой траснлясции - разная связка макросов. имхо и надо пилить готовое, а не велосипеды изобретать.

    вот автор вначале говорит - писал транслятор с -->> масм. зачем, если микрософтовский компилер с/с++ уже делает то же самое и довольно давно? так и тут.

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

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    samuraishowdown
    я тоже, поэтому приходится говорить гипотетические вещи. вся тема такая. :)
     
  18. Zemoh

    Zemoh New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2012
    Сообщения:
    16
    MMIX
    Идея нынешнего была - не делать клон C или C++, а написать и много своего. Просто базируюcь на этом языке, так как он мне ближе всего.

    По поводу же того, что я делал когда-то трансляцию языка типа C в MASM - я делал для двух студенческих работ, на которых удалось отбить некоторую денежку. Если бы Вы сходили по ссылке, которую я привел в начале темы, Вы бы это поняли. Подозреваю, что если бы эти работы тогда не попались на моем пути, я бы до этой темы и не дошел бы.

    P.S. Так никто мне и не объяснил ничего про морфоасм и мутации, хотя я вопрос задавал.