ООП на ассемблере

Тема в разделе "WASM.ASSEMBLER", создана пользователем asmasm, 16 янв 2006.

  1. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    ООП на ассемблере
     
  2. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Написал пару классов на ассемблере, созданных при помощи Object Creator. Выручают все больше, и больше.

    Классы: File,Buffer,String,Socket,Http,Mail.
     
  3. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Если кто этим занимался, может поделимся?
     
  4. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Я не занимался, но дай поглядеть, и еще лучше пиши статью.
     
  5. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Я пишу IDE на похожую тему.

    Но у меня несколько другой подход, так сказать, нетрадиционный.

    Генерация кода из базы данных.

    Что-то похожее на HLA, но не так накручено.
     
  6. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Ну,вот, кому интересно архивчик с 6 классами(еще совсем сырые, но



    работают).



    Как использовать(Amail):

    newobject aHttp,addr server_name,addr ip_server

    mov esi,eax ;создаем соедениние



    method esi,aHttp,GetPage,addr null_Query_String,addr szAnswer,addr



    HttpPage,PAGESIZE

    ;получаем ответ

    Никак не могу найти время исправить то, что

    надо указывать и имя_сервера, и ip.

    Я его использовал для руткита, который отправляет

    пароли с iexplore через cgi.



    Или вот как просто на асме сохранять интернет страницы:

    .386

    .model flat,stdcall

    option casemap:none

    include windows.inc

    include wsock32.inc

    include ws2_32.inc

    include kernel32.inc

    include user32.inc

    include /masm32/oop/objects.inc

    include /masm32/oop/lib/Asocket.asm

    include /masm32/oop/lib/Afile.asm

    include /masm32/oop/lib/aHttp.asm

    includelib kernel32.lib

    includelib user32.lib

    includelib ws2_32.lib

    includelib wsock32.lib

    .const

    ip db "64.233.187.99",0

    server db "google.com",0

    fn db "log",0

    .data

    res db "search?q=assembler&hl=ru&lr=&filter=0",0

    HttpPage db 8036 dup(0)

    pagesz dd 0

    file dd 0

    .code



    start:



    newobject Afile,addr fn

    mov file,eax



    newobject aHttp,addr server,addr ip

    mov esi,eax



    method esi,aHttp,GetPage,addr res,addr pagesz

    addr HttpPage,sizeof HttpPage



    method file,Afile,aWriteFile,addr HttpPage,pagesz



    destroy esi

    destroy file



    ret

    end start





    [​IMG] _1920024463__lib.rar
     
  7. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Да, наверно никто не интересуется ООП на асме, а ведь

    круто!
     
  8. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Два вопроса:



    1. Как наследовать из этого класса?

    2. Виртуальные методы есть или нет?



    Без этих возможностей - это просто структура и набор функций к ней.
     
  9. alexus

    alexus New Member

    Публикаций:
    0
    Регистрация:
    9 май 2005
    Сообщения:
    11




    Году в 92-м в журнале "Мир ПК" была моя статья о объектном программировании на ассемблере. В TASM, начиная с версии 3.0, введены объектные расширения. Правда, сделаны они не очень удобно, но их легко "заточить" под собственный вкус с помощью банальных макроопределений.

    В середине 90-х я приводил примеры объектного программирования на ассемблере в FIDO по теме TeachOOP.

    Писать с помощью ООП действительно удобно, при условии, что иерархии наследования классов продуманы достаточно хорошо.
     
  10. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    В Object Creator можно указать, класс родитель,

    а вот виртуальные методы не поддерживаются, и все члены класса public.

    Я хочу немного доработать этот проект, чтобы ввести полную поддержку ООП, а сейчас правда- это просто структура с функциями. Но если бы были готовые библиотеки таких структур...

    Можут кто знает???
     
  11. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Получается:

    CLASS имя_класса, имя_родителя

    имя_родителя <> ; Наследуемый класс

    CMETHOD func1

    CMETHOD func2

    val1 dd ?

    val1 dd ?

    имя_класса ENDS
     
  12. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    "Году в 92-м в журнале "Мир ПК" была моя статья о объектном программировани..."

    С вами полностью согласен, если достаточно хорошо продумать иерархию, то можно написать и суперпроизводитеьные библиотеки классов для программистов на ассемблере, может тогда он станет более популярным?
     
  13. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    "Году в 92-м в журнале "Мир ПК" была моя статья о объектном программировани..."

    С вами полностью согласен, если достаточно хорошо продумать иерархию, то можно написать и суперпроизводитеьные библиотеки классов для программистов на ассемблере, может тогда он станет более популярным?
     
  14. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    "Году в 92-м в журнале "Мир ПК" была моя статья о объектном программировани..."

    С вами полностью согласен, если достаточно хорошо продумать иерархию, то можно написать и суперпроизводитеьные библиотеки классов для программистов на ассемблере, может тогда он станет более популярным?
     
  15. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    "Году в 92-м в журнале "Мир ПК" была моя статья о объектном программировани..."

    С вами полностью согласен, если достаточно хорошо продумать иерархию, то можно написать и суперпроизводитеьные библиотеки классов для программистов на ассемблере, может тогда он станет более популярным?
     
  16. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Ведь на данный момент я не знаю ни одной структуированной библиотеки функций или классов для masm или tasm...
     
  17. dll99

    dll99 New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2006
    Сообщения:
    5
    Адрес:
    Russia
    С вами полностью согласен, если достаточно хорошо продумать иерархию, то можно написать и суперпроизводитеьные библиотеки классов для программистов на ассемблере, может тогда он станет более популярным?



    Вот Вам идея для написания

    таких библиотек --> {IL -->To-->Asm}

    Вот вам совет: Кое-что можно позаимствовать

    из проекта --> IL2ASM его ведут Японские друзья

    http://mona.sourceforge.jp



    Также посмотрите проект

    --> perl2asm

    --> jpython2asm

    --> java2asm



    Особенно рекомендую такое сочетание

    Eclipse+(perl-OR-python)+BCEL



    BCEL - проект Apache - по манипулированию байт-кодом налету.



    Также можете по-извращаться с таким сочетаним

    1. Eclipse+(perl-OR-python)+(IDA-движок)



    Мой сайт: www.jpython.narod.ru
     
  18. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    Я имел в виду что-то вроде STL для ассемблера и не более.
     
  19. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    STL это шаблоны, а не классы. Хотя шаблоны и сильно похожи на ассемблерные макросы, но в асме проверки типов нет, а без неё отлаживать такую сложную иерархию тот еще гемор ;-(
     
  20. asmasm

    asmasm New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    69
    Адрес:
    Uzbekistan
    А что мешает расширить язык за счет введения новых типов с проверкой, а на счет отладки: ведь есть великий оператор echo.