набор ассемблерной программы в редакторе 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