Функции в fasm'e

Тема в разделе "WASM.BEGINNERS", создана пользователем AvataR, 3 авг 2006.

  1. AvataR

    AvataR New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2006
    Сообщения:
    9
    У меня собственно такой вопрос:

    Как в fasm'e функции писать?

    Например в дельфяке я бы сделал:

    //====================================================
    //=========== EXE === == =

    ...
    type
    TMyFunc = function(C : PChar):PChar;

    var
    dll_handle : THandle;
    MyFunc : TMyFunc;

    begin
    dll_handle := LoadLibrary(PChar('mylib.dll');
    MyFunc := GetProcAddress(dll_handle,'MainProc');
    MyFunc('xxl');
    end;
    ...

    //=========== DLL === == =

    function MainProc(C : PChar):PChar;
    var
    xxx : PChar;
    begin
    ...
    Result := xxx;
    end;

    exports
    MainProc;

    //====================================================

    PS: Мне надо DLL'ky написать.
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Код (Text):
    1. public myproc
    2. myproc:
    3. ; тут тело функции
    4. mov eax,результат
    5. ret
     
  3. AvataR

    AvataR New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2006
    Сообщения:
    9
    Sorry...
    А как результат вернуть?
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Исправил
     
  5. AvataR

    AvataR New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2006
    Сообщения:
    9
    Чё-т не пойму.
    FASM выдает illegal instruction на етот public, да и результат нужен в строковом параметре.

    Может example какой есь?
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    AvataR
    Тогда Вам нужно сначала разобраться с фасмом и ассемблером, а потом уже пытаться собрать dll. Поиск по форуму рулит.
     
  7. AvataR

    AvataR New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2006
    Сообщения:
    9
    Ну я и пытаюсь освоить FASM. Для чего и зашел сюда. А на счет поиска - ищу, но не найду.
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    http://www.wasm.ru/forum/viewtopic.php?pid=127951#p127951
     
  9. AvataR

    AvataR New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2006
    Сообщения:
    9
    Пасиб за линки. Но хотелось бы еще и example.
     
  10. Dude03

    Dude03 New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    48
    ыы=) fasm\EXAMPLES\ +)
    в папке фасма лежит ман на англицком в пдф, фасм бери с wasm.ru=)
     
  11. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    в пакете fasmw есть пример простой dll
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Лентяй
     
  13. AvataR

    AvataR New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2006
    Сообщения:
    9
    С английским я не очень...

    Тама пример процедуры а мне надо создать функцию, возвращающую результат в виде строки.

    Немного есь, но не в программировании.
    Был бы материал нормальный на эту тема и все 0k
     
  14. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    ???
     
  15. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    AvataR
    Есть перевод на русский, поищи на форуме фасма. Потом, есть статьи о фасме на этом сайте, ессно, тоже на русском.
    Забудь о делфи. Почитай первый раздел статей, начни с азов. "Результат в виде строки" - в Win32 строка - это массив символов, оканчивающихся 0. Передаётся она из функции в функцию по указателю на первый символ.
    Код (Text):
    1. proc GetName
    2.   mov  eax,szName
    3.   ret
    4. endp
    5.  
    6. szName db 'name',0
     
  16. AvataR

    AvataR New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2006
    Сообщения:
    9
    Ice Student
    Благодарю.