PASM — ассемблер для попугая

Тема в разделе "WASM.ZEN", создана пользователем IceStudent, 29 сен 2005.

  1. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Приветствую!



    Кто-нибудь игрался с сабжем?



    Интересная штука. Давно косился на него, но как-то не хватало времени сесть вплотную. Думаю, может понравиться тем, кто любит кодить и на асме, и на перле :)



    Для тех, кто не в курсе, что за зверь:

    PASMParrot assembly language, язык для низкоуровневого доступа к виртуальной машине попугая. Из аналогов есть jasmin, который для Java VM, но тот, я бы сказал, слишком примитивен.



    Что мы имеем:<ul type=disc>

    <li>приятный синтаксис

    <li>мощную VM (a virtual super CISC machine)

    <li>полное распоряжение 4мя типами наборов регистров по 32 в каждом: для манипуляций с натуральными числами, числами с плавающей запятой, строками и объектами

    <li>семь (!) стеков для использования регистрами и для других функций

    <li>более 1300 инструкций для "процессора" попугая (но мнемоник, конечно, меньше, т.к. они по-разному кодируются в зависимости от типа операндов)

    <li>возможность работы с объектами, их методами, свойствами и т.п.

    и самое приятное:

    <li>возможность работы с динамически загружаемыми библиотеками.

    </ul>



    Ну и многое другое, а по сути всё то, что может parrot и даже больше.





    Вот для примера код программы, работающей по типу echo:
    Код (Text):
    1.  
    2.     getstdin P0     # получаем STDIN
    3.     getstdout P1        # получаем STDOUT
    4. REDO:
    5.     readline S0, P0     # читаем строку в регистр S0, используя "высокоуровневую" функцию readline
    6.     print S0        # печатаем строку
    7.     if S0, REDO     # если регистр не пуст, топаем на REDO
    8.     end
    9.  




    Вот, синтаксис может отдавать излишней высокоуровневостью, но никто не запрещает спуститься "пониже": использовать бранчи и т.п.



    В аттаче моя "проба пера": программа, выводящая MessageBox, используя функции Win32.



    [​IMG] 1561619871__win32demo.pasm
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Это чето страшное :) Как я понял, это все потом кодиркется в пикод?
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ms Rem

    "Это" может либо сразу исполняться попугаем, либо компилироваться в байткод.
     
  4. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    IceStudent

    и после такого синтаксис sctx называешь убойным :)
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    yureckor

    Ну да. Тут вроде нормальный асм. Или это мне только так кажется? ;)