Ich nehme mal an, auch mit Assembler wird es nicht recht viel schneller gehen. Das einzige, was man hier ausnutzen kann, ist diese Schweinerei mit cdq, bringt aber auch nicht recht viel, wenn überhaupt was.
Delphi-Quellcode:
function NumberLength(x: Integer): Integer;
asm
push ebx
mov ebx, 10
cdq
mov ecx, edx
and ecx, 1
xor eax, edx
sub eax, edx
@loop:
and eax, eax
jz @endloop
mov edx, 0
div ebx
add ecx, 1
jmp @loop
@endloop:
mov eax, ecx
pop ebx
end;