Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Re: XProfan X4 Inline-Assembler
Autor: Arndt Lindner (80.150.206.---)
Datum:   01.02.22 13:33

Ich habe mir einmal die INSTR-Funktion vorgenommen. Meine Assemblervariante ist z.Z. noch auf ein einzelnes Suchzeichen beschränkt und die Startposition der Suche muss zwingend als positive Zahl angegeben werden.
 asm "a_instr1",3
   mov  edi,par1
   mov  edx,[edi]
   and  edx,$ff
   mov  ebx,par2
   mov  esi,ebx
   mov  ecx,[esi-4]
   mov  eax,par3
   cmp  eax,ecx
   ja   ende
   dec  eax
   cmp  eax,0
   jb   weiter
   add  esi,eax
   sub  ecx,eax
 weiter:  
   cld
 sch:  
   lodsb
   and  eax,$ff
   cmp  eax,edx
   jz   ende1
   loop sch
 ende:  
   mov  eax,0
   jmp  ende2
 ende1: 
   mov  eax,esi
   sub  eax,ebx
 ende2:  
 endasm  
 
 Aufruf:  position = a_instr1(addr(suchzeichen),addr(durchsuchter_String),startpos)
 

Man kann die Parameter der Assembler-Funktion auch ohne die addr()-Funktionen verwenden, da geht aber ein Großteil des Geschwindigkeitsgewinns verloren. Der Grund ist mir schleierhaft.
Der Geschwindigkeitsgewinn hängt natürlich von der Länge des zu durchsuchenden Strings ab. Bei Strings der Länge 1000 und gesuchtes Zeichen am Ende beträgt der Gewinn im Interpretermodus ca. Faktor 2 und als exe ca. 3,5.
Aufbauend auf dieser Funktion, gegbenenfalls mit Suchtrings statt Suchzeichen, könnte man dann weitere Stringfunktionen imlementieren.
Die Assembler-Funktion ist bisher nur rudimentär getestet und deshalb nur mit Vorsicht anzuwenden.

Gruß
Arndt



 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 XProfan X4 Inline-Assembler  Neu
Arndt Lindner 31.01.22 20:24 
 Re: XProfan X4 Inline-Assembler  Neu
p. specht 01.02.22 00:05 
 Re: XProfan X4 Inline-Assembler  Neu
Heinz Brill 01.02.22 07:40 
 Re: XProfan X4 Inline-Assembler  Neu
Arndt Lindner 01.02.22 13:33 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org