Ищу пример простого одностранничного веб приложения на ассемблере. Я знаю про форум, который написан на нём, но он относительно сложный, макросы, шаблоны.... Мне ничего это не надо, мне бы просто понять, как можно сделать очень простое fast-cgi приложение на асме, и всё. То есть, nginx, fast-cgi, html файл. Видел примеры таких приложений на C/C++, но как это всё сделать на асме? Мне нужно будет вызывать сишный библиотечные функции из асма? То есть, FastCgi_Init().... и т.д. Как это можно сделать?
Так же как и делается на С. Выбор языкы не влияет на интерфейс между программой CGI и вызывающей её веб-сервера. Ищи RFC спецификацию FastCGI. Советую с начала написать на C, для простоты. На сколько помню, FastCGI отличается от простого CGI тем что процесс выполнения (worker process) подгружен в память еще по прихода какого либо запроса, и преждевременно тупо сидит и ждёт входа данных. CGI принимает запрос через стандартный stdin, а ответ (HTTP response) прописывается в stdout. Набор специальных параметров от веб сервера (например REMOTE_HOST и другие параметры описывающие запрос) идут через envp (environment variables), но могу ошибаться. Примера не знаю.
я её видел. вопрос ещё в том: > Мне нужно будет вызывать сишные библиотечные функции из асма? То есть, FastCgi_Init().... и т.д.
Инструкцией call вызываете функции библиотеки. Нужно будет библиотечные функции задекларировать, и потом предоставить саму библиотеуц компоновщику (linker).
Насколько я помню и сам делал, просто пишешь файл exe, кидаешь его в директори cgi и он начинает работать, когда ты к нему по имени обращаешся. Могу дать исходник, но он будет на си. Никаких вроде спец функций не надо. Просто, чтобы у апача был модуль СиДжиАй. Можешь его переписать на асм, через вставки в Си.
Простой пример: TestProc proc uses,hWorkerWORD echo 'Hello world!' mov eax,200 TestProc endp eax=код HTTP ответа И архив в котором работает приведённый выше пример. Распаковывать в любое место. Перед запуском убедиться в отсутствии программ висящих на 80 порту (скайп и тп), иначе будет ругаться при запуске. Работает на вин хп - 7 далее хз. Заходить на: локальный_адрес. Интерфейс программы: локальный_адрес/setup/ - вводить wasmin везде. В папке Scripts приведённый выше пример, так и интерфейс программы - там можно посмотреть синтаксис и как делать более сложные страницы, чем "Hello world". При изменении текста программы нужно только нажать сохранить в блокноте и всё, новый вариант страницы уже работает, если написать глючную программу - будет выдавать ошибку 500 на странице, а в интерфейсе программы можно узнать где возникла ошибка - заходить в setup и клацнуть правой кнопкой мыши по любому объекту в контейнере и в меню выбрать ошибки компиляции, далее test.netasm и смотреть где был глюк.
Возможно, заинтересует статья по теме на Хабре (хотя там немало хейтеров в коментах): Писать веб-сайты на ассемблере полезно и приятно Онлайн демо: https://board.asm32.info/ Репозиторий https://asm32.info/fossil/repo/asmbb/index