Thema: Delphi "Zeichen" im Integer

Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#12

Re: "Zeichen" im Integer

  Alt 19. Jan 2007, 14:58
Ich wuerde sagen, die staendige Division ist eine unnoetige Bremse, die man nicht zwingend braucht.
Algorithmisch gesehen sollte das die schnellste Variante sein:
Delphi-Quellcode:
function DecIntLength(x: integer): byte;
const
  m: packed array[0..9] of integer = ($A, $64, $3E8, $2710, $186A0, $F4240, $989680, $5F5E100, $3B9ACA00, $0);
asm
   MOV EAX, x
   MOV ESI, m
   CDQ
   XOR EAX, EDX
   AND EDX, 1
   ADD EAX, EDX
@@loopstart:
   INC DL
   MOV EBX, [ESI]
   TEST EBX, EBX
   JZ loopend
   CMP EBX, EAX
   JA loopend
   ADD ESI, 4
   JMP loopstart
@@loopend:
   MOV AL, DL
end;
Ich hab leider keinen Delphicompiler installiert, aber ich sehe eigentlich keinen grund, warums nich laufen sollte

greetz
Mike

[Edit] and is schneller als sets, also her damit
[Edit2] und den test brauchma auch ned... hoff ich zumindest mal *g*
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat