BruNews
Messages postés
21040
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
14 sept. 2006 à 23:32
Allez pour le fun:
__declspec(naked) DWORD __fastcall bnSumFromDWORD(DWORD n)
{ // ECX = val32
__asm {
mov [esp-4], ebx
test ecx, ecx
jnz short L1
xor eax, eax
ret 0
L1:
xor ebx, ebx
L2:
mov eax, -858993459
mul ecx
mov eax, edx
shr eax, 3
mov edx, ecx
lea ecx, [eax+eax*8]
add ecx, eax
sub edx, ecx
add ebx, edx
mov ecx, eax
test eax, eax
jnz short L2
mov eax, ebx
mov ebx, [esp-4]
ret 0
}
}
void __stdcall TestSum()
{
char szsum[12], szdword[12];
DWORD v;
v = GetTickCount();
ultoa(v, szdword, 10);
ultoa(bnSumFromDWORD(v), szsum, 10);
MessageBox(0, szsum, szdword, 0);
}
ciao...
BruNews, MVP VC++