Где-то есть таблицы? Или все нужно делать самому? Понятно, что может поменять любые кроме ESP, EBP, EDI, ESI.
чаще всего меняет все ибо как правило эти функции достаточно сложны и глупо недоиспользовать регистры, просто ESP, EBP, EDI, ESI при выходе восстанавливаются. И что значит "таблицы? Или все нужно делать самому?" даже если какая-то из апи случайно не изменяет какой-то из регистров то пользоваться этим очень нежелательно т.к. эта фича может неожиданно исчезнуть )
Например в стандартном Windows блокноте, используется, такой код: Код (Text): PUSH EBX PUSH EDI PUSH DWORD PTR SS:[EBP+8] CALL DWORD PTR DS:[<&USER32.SetDlgItemTextW>] ; USER32.SetDlgItemTextW Выше этого кода вызывается USER32.SendDlgItemMessageW. И после нее регистр EBX используется как параметр следующей API. Причем EBX увеличивается в цикле. Код (Text): MOV ESI,DWORD PTR DS:[<&USER32.SendDlgItemMessageW>] ; USER32.SendDlgItemMessageW PUSH EBX PUSH 01Eh POP EDI MOV EBX,0100A3E0h @NOTEPAD_01005F9F: PUSH 0 PUSH 027h PUSH 0C5h PUSH EDI PUSH DWORD PTR SS:[EBP+8] CALL ESI PUSH EBX PUSH EDI PUSH DWORD PTR SS:[EBP+8] CALL DWORD PTR DS:[<&USER32.SetDlgItemTextW>] ; USER32.SetDlgItemTextW ADD EBX,050h INC EDI CMP EBX,0100A430h JLE @NOTEPAD_01005F9F
sysexit Что именно вам помешало вбить в поиск тотже "df" ? Вот нашёл с двух кликов мышью http://www.wasm.ru/forum/viewtopic.php?pid=296155#p296155.
Неожиданно сам споткнулся на этой теме хотя считал что знаю о stdcall больше чем нужно http://www.scalprum.eu/cdecl_and_stdcall_calling_conventions.html Регистры EAX, ECX, и EDX доступны для использования в вызываемой функции Регистры EBX, ESI, EDI, и EBP не должны менять вызываемой функцией (если меняются, должны быть восстановлены)