Может я не в ту ветку пишу, но мне кажется что вопросс именно к знатокам АСМа. есть С код слудующего вида: Код (Text): Uint32_t crcSum = 0; Uint32_t strLenInWCHAR = wcslen(wbuf); for (i = 0; i < strLenInWCHAR; ++i) { if (wbuf[i] >= 'A' && wbuf[i] <= 'Z') { wbuf[i] += (L'a' - L'A'); } crcSum = A*crcSum + ((char*)&wbuf[i])[0]; crcSum = A*crcSum + ((char*)&wbuf[i])[1]; } А MVS 6.0 его кодирует в следующие команды: 46: Uint32_t crcSum = 0; 00403DFD C7 85 30 FF FF FF 00 mov dword ptr [crcSum],0 47: Uint32_t strLenInWCHAR = wcslen(wbuf); 00403E07 8D 85 64 FF FF FF lea eax,[ebp-9Ch] 00403E0D 50 push eax 00403E0E E8 18 22 00 00 call _wcslen (0040602b) 00403E13 83 C4 04 add esp,4 00403E16 89 85 2C FF FF FF mov dword ptr [strLenInWCHAR],eax 48: for (i = 0; i < strLenInWCHAR; ++i) 00403E1C C7 85 50 FF FF FF 00 mov dword ptr [ebp-0B0h],0 00403E26 EB 0F jmp Func+0A7h (00403e37) 00403E28 8B 8D 50 FF FF FF mov ecx,dword ptr [ebp-0B0h] 00403E2E 83 C1 01 add ecx,1 00403E31 89 8D 50 FF FF FF mov dword ptr [ebp-0B0h],ecx 00403E37 8B 95 50 FF FF FF mov edx,dword ptr [ebp-0B0h] 00403E3D 3B 95 2C FF FF FF cmp edx,dword ptr [strLenInWCHAR] 00403E43 0F 83 8D 00 00 00 jae Func+146h (00403ed6) 49: { 50: if (wbuf >= 'A' && wbuf <= 'Z') 00403E49 8B 85 50 FF FF FF mov eax,dword ptr [ebp-0B0h] 00403E4F 33 C9 xor ecx,ecx 00403E51 66 8B 8C 45 64 FF FF mov cx,word ptr [ebp+eax*2-9Ch] 00403E59 83 F9 41 cmp ecx,41h 00403E5C 7C 35 jl Func+103h (00403e93) 00403E5E 8B 95 50 FF FF FF mov edx,dword ptr [ebp-0B0h] 00403E64 33 C0 xor eax,eax 00403E66 66 8B 84 55 64 FF FF mov ax,word ptr [ebp+edx*2-9Ch] 00403E6E 83 F8 5A cmp eax,5Ah 00403E71 7F 20 jg Func+103h (00403e93) 51: { 52: wbuf += (L'a' - L'A'); 00403E73 8B 8D 50 FF FF FF mov ecx,dword ptr [ebp-0B0h] 00403E79 66 8B 94 4D 64 FF FF mov dx,word ptr [ebp+ecx*2-9Ch] 00403E81 66 83 C2 20 add dx,20h 00403E85 8B 85 50 FF FF FF mov eax,dword ptr [ebp-0B0h] 00403E8B 66 89 94 45 64 FF FF mov word ptr [ebp+eax*2-9Ch],dx 53: } 54: crcSum = A*crcSum + ((char*)&wbuf)[0]; 00403E93 8B 8D 30 FF FF FF mov ecx,dword ptr [crcSum] 00403E99 6B C9 1F imul ecx,ecx,1Fh 00403E9C 8B 95 50 FF FF FF mov edx,dword ptr [ebp-0B0h] 00403EA2 0F BE 84 55 64 FF FF movsx eax,byte ptr [ebp+edx*2-9Ch] 00403EAA 03 C8 add ecx,eax 00403EAC 89 8D 30 FF FF FF mov dword ptr [crcSum],ecx 55: crcSum = A*crcSum + ((char*)&wbuf)[1]; 00403EB2 8B 8D 30 FF FF FF mov ecx,dword ptr [crcSum] 00403EB8 6B C9 1F imul ecx,ecx,1Fh 00403EBB 8B 95 50 FF FF FF mov edx,dword ptr [ebp-0B0h] 00403EC1 0F BE 84 55 65 FF FF movsx eax,byte ptr [ebp+edx*2-9Bh] 00403EC9 03 C8 add ecx,eax 00403ECB 89 8D 30 FF FF FF mov dword ptr [crcSum],ecx 56: } 00403ED1 E9 52 FF FF FF jmp Func+98h (00403e28) Так что это за "FF FF FF"? Оптимизация отключена.
8B 95 50 FF FF FF mov edx,dword ptr [ebp-0B0h] в данном случае это просто 50FFFFFF в коде = FFFFFF50h = -0B0h E9 52 FF FF FF jmp Func+98h (00403e28) Здесь тоже просто отрицательное смещение Вобщем читай литературу по опкодам