Hat irgendjemand zufällig eine Liste, oder weiß wo es eine solche gibt, in der aufgeführt ist, wieviele Takte ein Befehl braucht?
09. November 2026, 18:26


:D:D!1. Wird NIE ein Kompiler richtig optimierten Code ausspucken, wie er schreibbar ist in ASM, weil der nie den Hintergrund dahinter erkennt und dadurch gewisse Kniffe anwenden kann.
bool IsPrime(unsigned int x)
{
switch (x)
{
case 0:
case 1:
return false;
case 2:
return true;
default:
if (x % 2 == 0)
return false;
for (unsigned int i = 3; i < fastIntSqrt(x); i++)
{
if (x % i == 0)
return false;
}
return true;
}
}
bool IsPrime(unsigned int x)
{
push ebx
mov ebx,eax
switch (x)
cmp ebx,1
jbe IsPrime+11h (4010B1h)
cmp ebx,2
jne IsPrime+15h (4010B5h)
case 2:
return true;
mov al,1
pop ebx
}
}
ret
{
case 0:
case 1:
return false;
xor al,al
pop ebx
}
}
ret
default:
if (x % 2 == 0)
test bl,1
return false;
je IsPrime+11h (4010B1h)
push esi
for (unsigned int i = 3; i < fastIntSqrt(x); i++)
mov esi,3
call fastIntSqrt (401000h)
mov ecx,eax
cmp ecx,esi
jbe IsPrime+41h (4010E1h)
jmp IsPrime+30h (4010D0h)
lea ecx,[ecx]
{
if (x % i == 0)
xor edx,edx
mov eax,ebx
div eax,esi
test edx,edx
je IsPrime+46h (4010E6h)
add esi,1
cmp esi,ecx
jb IsPrime+30h (4010D0h)
pop esi
}
return true;
mov al,1
pop ebx
}
}
ret
pop esi
return false;
xor al,al
pop ebx
}
}
ret

