Возникла идея поизвращаться...

Тема в разделе "WASM.HEAP", создана пользователем device, 3 сен 2007.

  1. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Бред, конечно, но может будет полезно.
    Написал библиотеку instructions.inc для языка PHP, в которой можно вызывать команды системы по их номеру, в результате исходный код вашего PHP-скрипта становится более изящным:
    И так, подключаем библиотеку и:
    Код (Text):
    1. <?php
    2. require ("instructions.inc");
    3.  
    4. def ("Cравниваем числа");
    5. def ("<hr><h2>Результат:</h2><br />");
    6. def ("Истина");
    7. def ("Ложь");
    8.     faddr(1);
    9.     mov ("epr", 0x11);
    10.     call();
    11.     faddr (2);
    12.     mov ("epr", 0x11);
    13.     call();
    14.     test (1,1);
    15.     $GLOBALS["bp"] ? faddr(3): faddr (4);
    16.     mov ("epr", 0x11);
    17.     call();
    18. ?>
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    а хде отач с либой?
     
  3. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Начальный вариант без каментов
     
  4. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Короче исправил либу. Теперь даже так можно:
    Код (Text):
    1. require ("instructions.inc");
    2.  
    3. def ("Cравниваем числа");
    4. def ("<hr><h2>Результат:</h2><br />");
    5. def ("Истина");
    6. def ("Ложь");
    7.     faddr(1);
    8.     mov ("epr", 0x11);
    9.     call();
    10.     faddr (2);
    11.     mov ("epr", 0x11);
    12.     call();
    13.     test (1,1);
    14.     rdef("bp") ? faddr(3): faddr (4);
    15.     mov ("epr", 0x11);
    16.     call();
    17.    
    18.     mov ("epr", 0x40);
    19.     mov ("mxd1", "localhost");
    20.     mov ("mxd2", "root");
    21.     mov ("mxd3", "");
    22.     call ();
    23.     test (rdef ("err"), true);
    24.     echo rdef("err");
    25.     rdef ("bp")?die("mysql_error"):nop();
     
  5. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Добавил циклы:
    Код (Text):
    1. function    rd(){
    2.  
    3.         mov ("iop", "\nhip-hop");
    4.         mov ("epr", 0x11);
    5.         call();
    6.  
    7.         }
    8.         mov ("lpcall","rd"); //rd()
    9.         mov ("lpi",0); //for i=0;
    10.         mov ("lpsig", 0x10); //i<
    11.         mov ("lph", 10);
    12.         loop();
    Выводит "Hip-Hop" 10 раз
     
  6. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Тут вот какой принцип:

    При подключении библиотеки, всем скриптам передаются глобальные данные, которые хранятся так:

    HDR - хранит числа 0x44 <---> 0x4D. Нужен для идентификации сущности.

    EPR - Нужен ждя хранения номеров функций. Функция Call() читает данные из EPR. 0x11 - Вывести строку или 0x40 - подключиться к БД (пример)

    ERR - Хранит последнюю ошибку.

    MXD1-MXD5 - Хранят первые пять аргументов функции.

    BP - BooleanPointer - указатель на истинность или ложность

    IOP - Указатель ввода-вывода. Может хранить строки (в виде списка). Является очередью.

    LPSIG - Сигнатура цикла. Указывает на тип операции:
    0x10 <
    0x20 >
    0x30 <=
    0x40 >=

    LPI - Указатель на начало цикла

    LPH - Указатель на конец цикла

    LPCALL - Указатель на тело цикла.

    loop() - Включает цикл с инкрементом
    loopde() - с декрементом

    -----------_______________________------------
    P.S.: Был сильно пьян, когда писал библиотеку.

    P.P.S.: Щас пишу среду, в которой все это будет работать.
    _______---------------------------------_________
     
  7. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Вот пример проверки статуса пользователя
    Код (Text):
    1.         mov ("mxd1", 0); // id пользователя
    2.         mov ("epr", 0xAC); // isUserOnline()
    3.         call();
    4.         rdef ("bp")?mov("iop", "on"):mov("iop","off"); //if true then "on" else "off"
    5.         mov ("epr", 0x11); //print ()
    6.         call();
    Вот так все просто!
     
  8. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    device,
    а ты реализовал условный оператор только как " ? : " , или есть еще варианты?
     
  9. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    varnie
    Пока над этим думаю.
    Хочу:
    "делать что-то", если результат положительный
    То же с отрицательным
    то же с нулевым
    и так далее...

    Код (Text):
    1. test (число, число)
    это сравнивает числа...
     
  10. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Сделал для поверки булевских значений:
    jt и jf

    Код (Text):
    1. def ("Юзер в сети");
    2. def ("Юзер не в сети");
    3.  
    4.         mov ("mxd1", 0);
    5.         mov ("epr", 0xAC);
    6.         call();
    7. function    on(){
    8.         mov ("epr", 0x11);
    9.         faddr(1);
    10.         call();}
    11.  
    12. function    off(){
    13.         mov ("epr", 0x11);
    14.         faddr(2);
    15.         call();}
    16.         mov ("epr", "on");
    17.         jt(); //перейти, если TRUE
    18.         mov ("epr", "off");
    19.         jf(); //Перейти, если FALSE
     
  11. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Вот конечный вариант либы
     
  12. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    По-моему меня прет нипадецки....
    Щас пишу примочку: библиотеку GUI. Назвал её "e_".
    Пока есть ф-ции e_init, e_main и e_final.
    Планируется коллекция виджетов
    Разрабатывается механизм посылки сигналов (JScript, Layers, PHP);
    Планируется догнать Ajax:))) (шутка)
     
  13. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Извращаемся дальше!!!
    Исходники Instructions выложу чуть позже...

    Вот код, который выводит на синий экран окно желтого цвета. Но окно это не простое оно содержит Hidden-слой, который смотрит на сервер. Короче, для каждого виджета, который показывается пользователю можно регистрировать какие угодно сигналы (типа MouseClicked), но обрабатывать их сервером, не перенаправляя юзера со страницы на страницу!
    Код (Text):
    1. require ("instructions.inc");
    2. /**
    3.     Определим функции для работы с виджетами
    4.     Из библиотеки "e_"
    5. **/
    6.  
    7. define ("e_main", "e_main");
    8. define ("e_init", "e_init");
    9. define ("e_final", "e_final");
    10. define ("HelloWindow", "e_window_widget"); //простое окно
    11.  
    12.         mov ("epr", e_init);
    13.         jd ();
    14.         mov ("epr", e_main);
    15.         jd();
    16.         mov ("epr", "e_desktop_widget");// Грузим тело документа
    17.         mov ("mxd1", "lightblue"); // задаем цвет тела
    18.         jd(); //вызываем тело
    19.        
    20.         /** Выводим Hello **/
    21.        
    22.         mov ("mxd1", "HH"); //имя окна
    23.         mov ("mxd2", "top:10; left:20; background-color:yellow; width:300; height:300; position:absolute;"); //параметры окна
    24.         mov ("ttl1", "Hello, World");
    25.         mov ("epr", HelloWindow);
    26.         jd(); //показываем окно.
     
  14. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Вот кстати еще вариант, куда более сносный.


    Кому нужна либа - напишите.

    Функции:
    1. mov (local в global)
    2. movr (global в global)
    3 cmp (global equ global)
    4 je (call (функция) если true)
    5 jne ( 4 - наоборот )
    6 push (значение - в стек)
    7 pop (значение из стека в RBF)
    8 popv Значение из стека в куда-нибудь еще
    9 ars добавл. значение в глоб массив
    10 agl помещает в RBF (ResultBuFfer) количество элементов глобального массива
    11 agbi (array get by index) - и так понятно
    12 arsi - array set by index
    --------
    Пока все - мне хватает. call отсутствует, нафиг он не нужен
     
  15. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    А вот таким может быть код:
    Код (Text):
    1. /**
    2.  * Прежде, чем вывести меню, проверим, зарегистрирован ли пользователь
    3.  **/
    4.    
    5.     global  $sidf, $regf;
    6.     mov ("sidf", isset ($_GET["sid"]));
    7.     mov ("regf", true);
    8.     cmp ("sidf","regf");
    9.     je  ("registered");
    10.     jne ("un_registered");
    11.    
    12. function    un_registered()
    13.         {
    14.     ars ("tabs_h", "/");
    15.     ars ("tabs_w", "Главная");
    16.    
    17.     ars ("tabs_h", "reg.php");
    18.     ars ("tabs_w","Регистрация");
    19.  
    20.     ars ("tabs_h", "about.php");
    21.     ars ("tabs_w","О проекте");
    22.  
    23.  
    24.  
    25.         }
    26.  
    27.  
    28. function    fne()
    29.         {
    30.  
    31.         die ("Срок вашей сессии истек. <form action=\"/\"><input type=\"submit\" value=\"Далее >>\"></form>");
    32.  
    33.         }
    34.  
    35. function    registered()
    36.         {
    37.     global  $ft_t, $file_existsz, $f2, $sid;
    38.     mov ("sid", $_GET["sid"]);
    39.     mov ("f2", true);
    40.     mov ("file_existsz", file_exists ($_GET["sid"].".lock"));
    41.     cmp ("f2","file_existsz"); 
    42.     jne ("fne");