изменение EBX в WINAPI

Тема в разделе "WASM.WIN32", создана пользователем 63F45EF45RB65R6VR, 7 фев 2012.

  1. 63F45EF45RB65R6VR

    63F45EF45RB65R6VR New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2011
    Сообщения:
    70
    Всем привет

    в статье (http://www.wasm.ru/article.php?article=1022004)
    есть такой абзац
    скажите пожалуйста а был ли прецедент что бы изменился регистр
    EBX в WINAPI функции ? потому что по наблюдениям за
    cl.exe он всегда сохраняет регистр EBX в паре с ESI и EDI
    и можно ли расчитывать на то что EBX изменен не будет ?
     
  2. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    В WINAPI сохраняются %ebx, %esi, %edi, %ebp
     
  3. Charlief

    Charlief New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2010
    Сообщения:
    129
    7mm
    как-то трудно представить что ecx и edx в stdcall не сохраняются если используются.
    другое дело fastcall - где первые два параметра передаются через ECX, EDX (Visual C++).
    eax - да, согласен, никогда не сохраняется.
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    63F45EF45RB65R6VR
    в Сам себе Iczelion до вызова RegisterClassEx и CreateWindowEx обнуляю EBX и далее использую нулевое значение в WndProc, но стоило попробовать для тех же целей использовать ESI или EDI и уже в WndProc обнаружил, что там ненулевое значение, так по крайней мере в Win XP
     
  5. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Charlief
    На сколько помню, %ecx будет сохраняться для __thiscall. Если используется __fastcall, то передача параметров через %ecx, %edx. Что из низ сохраняется не помню.

    Вопрос был про WINAPI. Это __stdcall, там чётко определено для x86_32: сохраняются %ebx, %esi, %edi, %ebp.

    UPD: лажу написал, для __stdcall определено только, что параметры через стек передаются.
     
  6. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
  7. Charlief

    Charlief New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2010
    Сообщения:
    129
    7mm
    Спасибо !