проект "полёт валькирии"

Тема в разделе "WASM.PROJECTS", создана пользователем eXod, 22 сен 2004.

  1. vito

    vito New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2004
    Сообщения:
    177
    Вы наверняка знаете, ну если не знаете то инфа всегда полезна.

    Подобный язык уже есть, конечно не такой навороченный, но С и Acm понимает прекрасно. Заточен под TASM. Специально для разработки всякой кибернетической живности:)

    Называется C-- или Sphinx.

    У меня версия 2.4 от 2000 г.

    Если надо могу выложить.
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Зачем его сюда выкладывать, на сайте автора можно свежие версии скачать.



    >




    Я бы так не сказал.

    Частично - да. И то и другое.



    Си:

    - нет поддержки макросов - нет никакой возможности использовать готовые *.h файлы, кроме самых простых.

    - не учитывается приоритет при вычислении выражений, т.е. всё вычисляется просто слева на право. Это не совсем удобно, т.к. может привести к различного рода ошибкам связанным с человеческим фактором.



    Асм:

    - несколько "странный" синтаксис, например, префиксы сегментов указываются как часть оператора размерности: DSDWORD, FSBYTE и т.п. С точки зрения современной flat модели памяти это IMHO атавизм.

    - с TASM (ideal) и TASM (MASM) совместимости нет.



    Ещё я заметил такие странности:



    - #align работает не всегда, иногда это выражается в неправильном значении меток.



    Выражения вроде

    EAX = DSBYTE[ESI];

    иногда компилируется в

    movzx eax,byte[esi]

    иногда в

    xor eax,eax

    mov al,[esi]



    В некоторых случаях появляются "мусорные байты" в коде.



    К сожалению, все эти случаи мне не удалось воспроизвести на небольшего объёма сорцах, так что даже баг-репорт отправить не могу автору :-(



    Вообще, проект интересный, нужно отдать должное Михаилу Шекеру.

    IMHO только
    является неким тормозом и причиной перечисленных мной недостатков.
     
  3. vito

    vito New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2004
    Сообщения:
    177
    Я согласен со всем вышесказанным. Просто уж больно грандиозный проект вы затеяли, это много сил а главное времени. Может стоит связаться с автором и развить проект в новом качстве, потому идеи у вас классные, хотелось бы, чтобы довели до конца.

    Все ж таки он немало уже сделал, и компилятор его(С--), пусть с багами, но все ж таки работает.

    Это так, совет, никак не критика.

    Просто очень бы хотелоь увидеть продукт "живьем" и поработать с ним.
     
  4. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    Мысли по поводу того проекта.



    НС в качестве ЛА - это достаточно интересно, но... не более. Нейросеть с такой задачей справится успешно, но ей нужен синтаксис. Да, она может распознать вариации на тему синтаксиса, но не более. Хотя нет, она может еще по памяти предположить какой код будет дальше, но зачем? Вряд ли кто-то из здравомыслящих будет полагатьсяя на ее память и не будет писать кусок кода... Таким образом, единственное ее примененение - это т.н. "свободный синтаксис", который является вариацией на тему базового синтаксиса. ИМХО, читать сырец в таком стиле будет невозможно: где-то есть ";", где-то нет и т.д.. Это архи-неудобно. Только не надо говорить, что можно будет писать программы на естественном языке. Во-первых это неудобно и займет много кода, а во-вторых понятие оптимизации такого кода редуцируется до нуля.



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





    Вот идея, которую Эд предложил, мне кажется более жизнеспособной, т.к. по сути в результате имеем формальный язык, скорость разработки на котором очень высока за счет объединения блоков в кучу. Но язык, повторюсь, ФОРМАЛЬНЫЙ, а не какой-то там. А значит его МОЖНО изучить на хорошем уровне и писать хороший и красивый код, а главное - понимать код других людей.
     
  5. phoenix

    phoenix New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    4
    Адрес:
    Russia
    Неплохо бы представить грамматики нового языка. Например, в виде БНФ, а лучше YACC. А то непонятно, как можно написать компилятор с языка без грамматики.
     
  6. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    Поинтересуюсь... Есть ли уже какие-то результаты по вашему проекту?
     
  7. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Насчёт модульности языка:
    У меня давно появилась идея о компиляторе, который имеет лишь две функции - очень мощный препроцессор + операции определения байт в выходном файле. В свою очередь на макросах реализуются все команды процессора, в затем с помощью этих макросов описываются уже макросы в стиле ЯВУ - объявление процедур, присваивание переменным, условия, циклы. Таким образом можно работать на любом уровне - от непосредсвеного задания файла по байтам, до программирования с использованием классов без понятия о ассемблере вообще. При этом всё можно сильно изменить - можно написать макросы для команд другого процессора (причём если синтаксис аналогичных по назначению команд будет одинаков, то даже не придётся менять макросы более верхнего уровня), можно создавать свои синтаксические конструкции или изменять поведение уже созданных. И вообще не обязательно описывать программу - с помощью этого языка можно будет создавать и файлы данных. Ограничения по синтаксису минимальны - постоянен лишь макроязык. Всё остальное можно менять.
    Я вижу такой компилятор как fasm без поддержки инструкций процессора, но зато с ещё более мощным макроязыком.
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    KIV
    этот компилятор не будет оптимизировать.
     
  9. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    та и конпелировать то нечего получется языка то не будет
    будет парсер замен
    oxСС=int 3 = DebugBreak = cDebugBreakPointClass= трололо

    Ну по крайней мере как я это увидел в написанном
     
  10. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Не совсем. Это не просто замены. Макросы принимают параметры.
    То есть будет нечто вроде:
    Код (Text):
    1. macro push arg {
    2.    ; Тут мы с помощью db делаем опкоды для push
    3. }
    4. macro mov dest, src {
    5.    ...
    6. }
    7. ...
    8. macro proc name,[arg] {
    9.    push ebp
    10.    mov ebp, esp
    11. }
    12. и т. п.
    То есть как стандартные макросы fasm (вроде процедур или if), но с большими возможностями (чтобы можно было разбирать и переводить в команды условия if и while) + инструкции тоже макросы.
    Код (Text):
    1. macro variable name {
    2.    name = $
    3.    dd ?
    4.    macro name [expr] {
    5.       match == val, expr {
    6.            mov [name], val
    7.       }
    8.    }
    9. }
    10. ...
    11. variable t
    12. t = 10
    Разумеется, мои примеры лишь сильно упрощённый и приблизительный код макросов.
    Да. Вот над тем как делать оптимизацию надо подумать.