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

Discussion in 'WASM.ZEN' started by IceStudent, Sep 29, 2005.

  1. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    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:
    Code (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

    Blog Posts:
    0
    Joined:
    Apr 17, 2005
    Messages:
    1,057
    Location:
    С планеты "Земля"
    Это чето страшное :) Как я понял, это все потом кодиркется в пикод?
     
  3. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    Ms Rem

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

    yureckor New Member

    Blog Posts:
    0
    Joined:
    Feb 25, 2004
    Messages:
    494
    Location:
    Russia
    IceStudent

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

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    yureckor

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