Простое, одностраничное fast-cgi веб приложение на ассемблере

Тема в разделе "WASM.BEGINNERS", создана пользователем yoyogi, 26 авг 2017.

  1. yoyogi

    yoyogi New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2017
    Сообщения:
    5
    Ищу пример простого одностранничного веб приложения на ассемблере. Я знаю про форум, который написан на нём, но он относительно сложный, макросы, шаблоны.... Мне ничего это не надо, мне бы просто понять, как можно сделать очень простое fast-cgi приложение на асме, и всё. То есть, nginx, fast-cgi, html файл.

    Видел примеры таких приложений на C/C++, но как это всё сделать на асме? Мне нужно будет вызывать сишный библиотечные функции из асма? То есть, FastCgi_Init().... и т.д.

    Как это можно сделать?
     
  2. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    Так же как и делается на С. Выбор языкы не влияет на интерфейс между программой CGI и вызывающей её веб-сервера. Ищи RFC спецификацию FastCGI. Советую с начала написать на C, для простоты.

    На сколько помню, FastCGI отличается от простого CGI тем что процесс выполнения (worker process) подгружен в память еще по прихода какого либо запроса, и преждевременно тупо сидит и ждёт входа данных.

    CGI принимает запрос через стандартный stdin, а ответ (HTTP response) прописывается в stdout. Набор специальных параметров от веб сервера (например REMOTE_HOST и другие параметры описывающие запрос) идут через envp (environment variables), но могу ошибаться.

    Примера не знаю.
     
  3. yoyogi

    yoyogi New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2017
    Сообщения:
    5
    я её видел. вопрос ещё в том:
    > Мне нужно будет вызывать сишные библиотечные функции из асма? То есть, FastCgi_Init().... и т.д.
     
  4. yoyogi

    yoyogi New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2017
    Сообщения:
    5
    или как-то напрямую вызывать другие, более низкоуровневые функции?
     
  5. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    Инструкцией call вызываете функции библиотеки. Нужно будет библиотечные функции задекларировать, и потом предоставить саму библиотеуц компоновщику (linker).
     
    yoyogi нравится это.
  6. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
  7. yoyogi

    yoyogi New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2017
    Сообщения:
    5
    да

    а откуда заголовочные файлы для fastcgi для асма брать?
     
  8. yoyogi

    yoyogi New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2017
    Сообщения:
    5
    а, по-моему нашёл
     
  9. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Насколько я помню и сам делал, просто пишешь файл exe, кидаешь его в директори cgi и он начинает работать, когда ты к нему по имени обращаешся. Могу дать исходник, но он будет на си. Никаких вроде спец функций не надо. Просто, чтобы у апача был модуль СиДжиАй. Можешь его переписать на асм, через вставки в Си.
     
  10. Олег

    Олег New Member

    Публикаций:
    0
    Регистрация:
    1 сен 2017
    Сообщения:
    10
    Простой пример:
    TestProc proc uses,hWorker:lol: WORD
    echo 'Hello world!'
    mov eax,200
    TestProc endp
    eax=код HTTP ответа
    И архив в котором работает приведённый выше пример. Распаковывать в любое место. Перед запуском убедиться в отсутствии программ висящих на 80 порту (скайп и тп), иначе будет ругаться при запуске. Работает на вин хп - 7 далее хз. Заходить на: локальный_адрес. Интерфейс программы: локальный_адрес/setup/ - вводить wasmin везде.
    В папке Scripts приведённый выше пример, так и интерфейс программы - там можно посмотреть синтаксис и как делать более сложные страницы, чем "Hello world". При изменении текста программы нужно только нажать сохранить в блокноте и всё, новый вариант страницы уже работает, если написать глючную программу - будет выдавать ошибку 500 на странице, а в интерфейсе программы можно узнать где возникла ошибка - заходить в setup и клацнуть правой кнопкой мыши по любому объекту в контейнере и в меню выбрать ошибки компиляции, далее test.netasm и смотреть где был глюк.
     

    Вложения:

  11. Jupiter

    Jupiter Jupiter

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