· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Include vs Link

Посл.отвђт Сообщенiе


Дата: Май 14, 2003 12:12:20

Дизассемблировав starcraft v1.10 я увидел ужасный код:

* Referenced by a CALL at Address:
|:00447A2D
|
:004C6F63 50 push eax
:004C6F64 53 push ebx
:004C6F65 51 push ecx
:004C6F66 52 push edx
:004C6F67 56 push esi
:004C6F68 57 push edi
:004C6F69 55 push ebp
:004C6F6A C70570C24F0080020000 mov dword ptr [004FC270], 00000280
:004C6F74 8B3D20566B00 mov edi, dword ptr [006B5620]
:004C6F7A A11CE25100 mov eax, dword ptr [0051E21C]
:004C6F7F 8B1D1CE25100 mov ebx, dword ptr [0051E21C]
:004C6F85 C1E009 shl eax, 09
:004C6F88 8B0D1CE25100 mov ecx, dword ptr [0051E21C]
:004C6F8E C1E307 shl ebx, 07
:004C6F91 C1E105 shl ecx, 05
:004C6F94 03C3 add eax, ebx
:004C6F96 03C1 add eax, ecx
:004C6F98 8B1518E25100 mov edx, dword ptr [0051E218]
:004C6F9E 03C2 add eax, edx
:004C6FA0 3D00980400 cmp eax, 00049800
:004C6FA5 7C0C jl 004C6FB3

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C6FB1(C)
|
:004C6FA7 2D00980400 sub eax, 00049800
:004C6FAC 3D00980400 cmp eax, 00049800
:004C6FB1 7DF4 jge 004C6FA7

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004C6FA5(C)
|
:004C6FB3 BA90010000 mov edx, 00000190
:004C6FB8 8BF0 mov esi, eax
:004C6FBA 0335FCE15100 add esi, dword ptr [0051E1FC]
:004C6FC0 E84BFFFFFF call 004C6F10
:004C6FC5 5D pop ebp
:004C6FC6 5F pop edi
:004C6FC7 5E pop esi
:004C6FC8 5A pop edx
:004C6FC9 59 pop ecx
:004C6FCA 5B pop ebx
:004C6FCB 58 pop eax
:004C6FCC C3 ret

Умножение на 672 восемью коммандами я еще могу понять, но зачем три раза загружать число из памяти? Неужели blizzard'у сложно перекомпилировать старую библиотеку? Или они пользуются вторым VS?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.066