fasm+functions

Тема в разделе "WASM.BEGINNERS", создана пользователем n1kt0, 24 июн 2009.

  1. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    В общем необходимо создать свою функцию, которая будет принимать параметры. Причем аргументы не константы, а какие-то значения полученные в рузультате отработки каких-то API
    допустим:
    start:
    ......
    ......
    invoke MapViewOfFile,[hMapping],FILE_MAP_ALL_ACCESS,0,0,0
    mov [arg1],eax
    ;вызов своей функции:
    invoke some_function,arg1

    some_function:
    а вот тут и заминка:)
    как сделать оное ?
     
  2. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    *invoke some_function,[arg1]
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    stdcall
     
  4. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    а развернутей ответ ?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    http://tinyurl.com/mypkcm
    Если интресует макро, то в масме есть в хидере несколько как примеры - Scall и тп.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а развернутый ответ в мануалах фасма.
     
  7. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    n1kt0
    примеры к фасму смотри
     
  8. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    нашел в примере pas
     
  9. Seven

    Seven New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2009
    Сообщения:
    3
    n1kt0
    Код (Text):
    1. proc some_function arg1
    2. ;...
    3. endp
    В FASM по дефолту функции создаются с конвенцией STDCALL, поэтому можно спокойно вызывать их invoke'ом.
    В твоем коде не обязательно класть параметр в отдельную переменную:
    Код (Text):
    1. invoke some_function, eax
     
  10. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    вызов будет выполнен:
    Код (Text):
    1. push...
    2. call [some_function]
    поэтому нужно использовать stdcall:
    Код (Text):
    1. push...
    2. call some_function