Имеется код вызова функции: mov eax,77ED6FC4h ;WSAStartup call eax ;Вызов У Billy Belcebu: mov eax,dword ptr[ebp+ApiAddress] call eax ;неоптимизировано call dword ptr [ebp+ApiAddress] ;оптимизировано Сколько ни пыталься понять - ни к чему так и не пришел =(
Billy Belcebu видимо имел ввиду, что ebp указывает на таблицу api адресов, тогда в первом(неоптимизированном) случае мы теряем по 2 байта на каждом вызове Код (Text): ;================================================== api_table: dd 0 ; f1 dd 0 ; f2 dd 77ED6FC4h ; WSAStartup dd 0 ; f4 ;=================================================== mov ebp,api_table ;=================================================== 8B45 00 mov eax,[ebp] FFD0 call eax ; f1 8B45 04 mov eax,[ebp+4] FFD0 call eax ; f2 8B45 08 mov eax,[ebp+8] FFD0 call eax ; WSAStartup 8B45 0C mov eax,[ebp+12] FFD0 call eax ; f4 ;=================================================== FF55 00 call dword [ebp] ; f1 FF55 04 call dword [ebp+4] ; f2 FF55 08 call dword [ebp+8] ; WSAStartup FF55 0C call dword [ebp+12] ; f4 ;=================================================== Настоятельно рекомендую(для начала) научится пользоватся отладчиком (вместе со справочником по командам), доп. урок в теме Оптимизнутость
Допустим: mov eax,[ebp] call eax Функция не сработает =( Потому что вызов будет происходить не по адресу в ebp, а по адресу который находить по адресу ebp. Надеюсь понятно выразился ^_^