Все регистры которые используют API функции

Тема в разделе "WASM.BEGINNERS", создана пользователем Levmetall, 7 янв 2010.

  1. Levmetall

    Levmetall New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2009
    Сообщения:
    21
    Всем привет!
    Скажите пожалуйста, какие ригистры юзают апи функции??
    Знаю, что точно это eax и ecx.
    Спасибо!
     
  2. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    Levmetall
    все которые требуются, требование сохранять относится только EBX ESI EDI (наскока мне известно)
     
  3. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Rockphorr
    ну и EBP
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Rockphorr, учите матчасть
    Levmetall, функции юзают любые регистры. но как сказанно выше, содержимое некоторых регистров должно быть сохранено и востановленно при выходе из функции. эти регистры ebx, esi, edi, ebp, а в __stdcall ещё и esp.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    в __cdecl сохраняется esp
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    http://www.wasm.ru/forum/viewtopic.php?pid=296155#p296155
    fpu/mmx также желательно сохранять.
     
  7. Levmetall

    Levmetall New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2009
    Сообщения:
    21
    СПАСИБО ООООГРОМММНООЕЕЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Теперь буду знать какие регистры сохранять вручную.
    А то один раз создал цикл, и не сохранил его в стеке, апи функция изменила ecx. И в итоге цикл начал выполняться оччень много. И пошел збой проги.
     
  8. dr_godsl

    dr_godsl New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2009
    Сообщения:
    60
    я не заморачиваюсь с сохранением регистров. все это легко сделать с помощью pusha/popa, а если нужно вернуть результат, возвращаю в его в eax (после popa).
    зы было замечено падение в некоторых случаях использования команд поднятия/снятия битов регистра флажков (например для repne scasb). в этом случае я применял pushf/popf и усе ровненько робит.