Война миров - ассемблер против си

             

ключевой фрагмент демонстрационной программы CRC.c


Компилируем ее Microsoft Visual C++ в режиме максимальной оптимизации (ключ Ox — "cl.exe /Ox crc.c") и загружаем полученный obj в дизассемблер:

.text:00000000             _CRC   proc near

.text:00000000

.text:00000000             var_1  = dword ptr -1

.text:00000000             arg_0  = dword ptr  7

.text:00000000             arg_4  = dword ptr  0Bh

.text:00000000

.text:00000000 51          push   ecx

.text:00000001 8B 54 24 0C mov    edx, [esp+1+arg_4]

.text:00000005 32 C9       xor    cl, cl

.text:00000007 33 C0       xor    eax, eax

.text:00000009 88 4C 24 00 mov    byte ptr [esp+1+var_1], cl

.text:0000000D 85 D2       test   edx, edx

.text:0000000F 7E 16       jle    short loc_27

.text:00000011 53          push   ebx

.text:00000012 56          push   esi

.text:00000013 8B 74 24 10 mov    esi, [esp+9+arg_0]

.text:00000017

.text:00000017       loc_17:

.text:00000017 8A 1C 30    mov    bl, [eax+esi]

.text:0000001A 02 CB       add    cl, bl

.text:0000001C 40          inc    eax

.text:0000001D 3B C2       cmp    eax, edx

.text:0000001F 7C F6       jl     short loc_17

.text:00000021 5E          pop    esi

.text:00000022 88 4C 24 04 mov    byte ptr [esp+5+var_1], cl

.text:00000026 5B          pop    ebx

.text:00000027

.text:00000027       loc_27:

.text:00000027 8B 44 24 00 mov    eax, [esp+1+var_1]

.text:0000002B 25 FF 00 00+ and    eax, 0FFh

.text:00000030 F7 D8       neg    eax

.text:00000032 59          pop    ecx

.text:00000033 C3          retn

.text:00000033 _CRC  endp



Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий