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


набор ассемблерной программы в редакторе TSE Pro


А что на счет GCC? Для начала возьмем древнюю, но все еще широко используемую версию 2.95, отличающуюся стабильностью и высокой скоростью трансляции. На самом высоком уровне оптимизации (ключ -O3: "gcc crc.c -O3 -o crc"), компилятор генерирует следующий код:

.text:080483E0       CRC           proc near

.text:080483E0

.text:080483E0             arg_0  = dword ptr  8

.text:080483E0             arg_4  = dword ptr  0Ch

.text:080483E0

.text:080483E0 55          push   ebp

.text:080483E1 31 D2       xor    edx, edx

.text:080483E3 89 E5       mov    ebp, esp

.text:080483E5 53          push   ebx

.text:080483E6 8B 4D 0C    mov    ecx, [ebp+arg_4]

.text:080483E9 31 C0       xor    eax, eax

.text:080483EB 8B 5D 08    mov    ebx, [ebp+arg_0]



.text:080483EE 39 CA       cmp    edx, ecx

.text:080483F0 7D 16       jge    short loc_8048408

.text:080483F2 8D B4 26 00+ lea    esi, [esi+0]

.text:080483F9 8D BC 27 00+ lea    edi, [edi+0]

.text:08048400

.text:08048400       loc_8048400:

.text:08048400 02 04 1A    add    al, [edx+ebx]

.text:08048403 42          inc    edx

.text:08048404 39 CA       cmp    edx, ecx

.text:08048406 7C F8       jl     short loc_8048400

.text:08048408

.text:08048408       loc_8048408:

.text:08048408 5B          pop    ebx

.text:08048409 0F B6 C0    movzx  eax, al

.text:0804840C F7 D8       neg    eax

.text:0804840E 5D          pop    ebp

.text:0804840F C3          retn

.text:0804840F             CRC    endp



Содержание раздела