Все в учебных целях. Просто если здесь есть знатоки, то предложите ваши варианты или улучшения. Начал я так (по ходу выполнения буду публиковать продолжение текста) Код (Text): - with Ada.Text_IO; use Ada.Text_IO; with GNAT.Sockets; use GNAT.Sockets; with Interfaces; with System.Machine_Code; use System.Machine_Code; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; procedure webserver is Group: Constant String:="192.168.0.255"; task wserver is entry start (aport: IN INTEGER); entry stop; end wserver; task body wserver is --Объявляем параметры сервера Address : Sock_Addr_Type; Server : Socket_Type; Socket : Socket_Type; Channel : Stream_Access; ccv:integer; begin Address.Addr := Addresses (Get_Host_By_Name (Host_Name), 1); EAX:Interfaces.UNSIGNED_32; accept start (aPORT: in INTEGER) do Address.Port := 10005; ccv:=aPORT; end start; accept stop; end wserver; procedure startserver is begin asm ( ".startserver:"&LF&HT& --Основная точка входа "call ada__integer_text_io__get__2"&LF&HT& --Вызываем чтение с консоли "addl $16, %%esp"&LF&HT& --Нормализуем стек "movl %%eax, %0", --сохраняем номер порта в EAX Outputs=>Interfaces.Unsigned_32'ASM_OUTPUT("=g",EAX) -- Сохраняемся ); asm ( LF&HT& "leal -12(%%ebp), %%eax"&LF&HT& -- Где вход? "movl %%eax, -16(%%ebp)"&LF&HT& "movl $100, -12(%%ebp)" ); end startserver; EAX:INTERFACES.UNSIGNED_32; begin asm( LF &HT & "jmp .startserver"); --ПУСК СЕРВЕРА - Просто прыжок (jmp) к основной точке входа end webserver;
Рабочие и доводимые до конца проекты пишутся вне форума. Здесь - ради изучения. Готовый сервер тут: Почему в этом месте возникает ошибка сегментирования? Код (Text): asm (".mssg:"); Address := Get_Address (Channel); asm (LF&HT& "call gnat__sockets__image__3 "&LF&HT& "movl %%esi, %%eax"&LF&HT& "movl %%eax, %1"&LF&HT& "jmp .pch" ); goto DNOTH; <<PCH>> asm (".pch:"); String'Output (Channel, MSC); <<DNOTH>> asm (".dn:"); null;
UbIvItS GNu Ada Translator, или просто GNAT Где? P.S: Про ошибку сегментирования. Спалил вчера NIC на резервном контроллере домена предприятия (там код запускал)
Надо будет в целях эксперимента повторить эту глупость и написать в виде функции БД сайт ) SELECT SITE(%s) as HtmlContent; где %s - запрос GET(к примеру).
device я vs юзаю и имею дело с с++, c#, vb.net и пхп нравится ещё - ада, паскаль, делфи не юзаю; хотя, если надо будет- возьмусь и за них