"Самопальный" inline ассемблер для интерпретатора.

Тема в разделе "WASM.ASSEMBLER", создана пользователем jangle, 22 мар 2005.

  1. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    Хочу встроить в скриптовый язык возможность использования ассемблерных вставок, алгоритм примерно такой, интерпретатор размещает в стеке данные, в формате _stdcall, и передает указатель на стек в ассемблерную процедуру, эта процедура сама снимает с данные со стека обрабатывает их и возвращает туда же результат. Разместить откомпилированный ассемблерный код в экзешнике, и связать его с байт-кодом интерпретатора для меня не проблема. Сложность представляет компиляция текста ASM процедуры в бинарник, перевод команд типа push, jmp мне понятен, вместо них надо подставить их опкоды. Однако как переводить строки, константы, метки?

    Смотрел исходные коды некоторых ассемблерных компиляторов, но они все создают исполняемые файлы, это не то что мне нужно. Подскажите ссылки на доки по созданию inline ассемблеров.
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    SoftWire is a run-time x86 assembler, written in C++. It can be used as a JIT compiler back-end for scripting languages, or for dynamic code generation of optimized inner loops.



    а вообще, fasm не сложно доработать - он же сначала в память всё компилит, а потом в файл пишет
     
  3. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    а вообще, fasm не сложно доработать - он же сначала в память всё компилит, а потом в файл пишет



    А где этот fasm можно скачать?
     
  4. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    SoftWire наверное прикольная вещь, но для своей компиляции он требует VC++.NET а у меня его нет.. :dntknw:(
     
  5. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка


    прикольная шутка
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    fasm можно скачать с wasm.ru или с офсайта.

    компилятор от VC.NET 7.1 microsoft раздаёт бесплатно.



    ЗЫ: afaik PowerBasic тоже использует fasm для компиляции ;)
     
  7. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    fasm можно скачать с wasm.ru или с офсайта.

    компилятор от VC.NET 7.1 microsoft раздаёт бесплатно.



    ЗЫ: afaik PowerBasic тоже использует fasm для компиляции ;)




    Спасибо за инфу!



    Кстати, как PowerBasic использует FASM??? Никогда об этом не слышал
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Как и многие другие компиляторы - генерирует asm файл и отдает его ассемблеру.

    Про PowerBasic 100% ручаться не могу, Privalov упоминал про то, что Раньше PowerBasic использовал masm, а теперь fasm (может это было про другой бейсик?)
     
  9. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    Как и многие другие компиляторы - генерирует asm файл и отдает его ассемблеру.



    Это не так, PowerBASIC сразу создает EXE и DLL без использования асма, у меня есть две версии этого компилятора PowerBASIC for Windows 7.04 и PowerBASIC Console Compiler 3.04



    Privalov упоминал про то, что Раньше PowerBasic использовал masm, а теперь fasm



    Ты ошибся, это было интервью со Стивеном Хатчессоном, автором пакета MASM32, там он говорил, что использует в своей работе PowerBASIC так, как у него очень хороший встроенный ассемблер. По моему, Хатчессон, был одним из разработчиков PowerBASIC`а.



    Кстати, там не только хороший ассемблер, но и сам язык

    очень мощный и гибкий. По синтаксису напоминает смесь

    Visual Basic и ANSI C, я например после изучения PowerBASIC отказался от использования C компилеров, "LCC Win32" и "Pelles C for Windows", так как они проигрывают PowerBASIC`у в размере создаваемых экзешников и скорости их работы.
     
  10. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    jangle >




    "Сразу" невозможно в принципе, даже fasm использует 3 стадии, причём на последнеё может выполняться несколько проходов. А fasm там внутри сидит - asm файл создаётся в памяти и т.д.



    >




    Я читал про это на board.flatassembler.net. В чём я мог ошибиться - только в названии бейсика (хотя я других не знаю). К сожалению, через поиск не могу найти, видимо это было в heap, там топы подрезаются через месяц...



    >




    Гы, да чего с LCC-то сравнивать (Pelles C - это он же, доработанный)? Это же "учебный" компилятор, приложение к книжке.
     
  11. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
    А мне кажеться что ето PureBasic изпользует FASM.
     
  12. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    А мне кажеться что ето PureBasic изпользует FASM.



    PureBasic NASM использует, это я точно знаю.





    К сожалению, через поиск не могу найти, видимо это было в heap, там топы подрезаются через месяц...



    Можешь на WASM.RU посмотреть эту статью



    http://wasm.ru/article.php?article=hutch





    А fasm там внутри сидит - asm файл создаётся в памяти и т.д.



    Первая версия PowerBASIC вышла в 1996 году, спрашивается какой еще fasm существовал в те времена? Да и потом, все таки там фирма серьезная, компилятор у них свой, и никакой fasm там рядом не валялся



    :))
     
  13. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
    jangle





    Наверное не совсем точно...или даже совсем неточно. ;)
     
  14. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    johnfound



    Спасибо, а то я перепутал. Что PureBasic, что PowerBasic - почти одинаковые названия :).

    Про него Privalov и говорил.





    jangle >




    В этой статье нет топиков с форума fasm!
     
  15. Fallout

    Fallout New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2004
    Сообщения:
    94
    Адрес:
    Russia
    Извеняюсь за жуткий оффтом вопрос к .. jangle а не мог бы ты поделиться PowerBASIC Console Compiler 3.04 а то довно ищу +)
     
  16. jangle

    jangle New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2005
    Сообщения:
    56
    Адрес:
    Russia
    Извеняюсь за жуткий оффтом вопрос к .. jangle а не мог бы ты поделиться PowerBASIC Console Compiler 3.04 а то довно ищу +)



    Вот тут посмотри,

    http://vbnet.ru/forum/show.aspx?id=66011

    недавно от туда качал