AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitte Assembler-Routine verbessern

Ein Thema von alzaimar · begonnen am 23. Dez 2007 · letzter Beitrag vom 23. Feb 2014
 
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Bitte Assembler-Routine verbessern

  Alt 24. Dez 2007, 09:54
Zitat von Dax:
Delphi-Quellcode:
function CharPos_JOH_SSE2_1_b(Ch : Char; const Str : AnsiString; aStart : Integer = 1) : Integer;
asm
  test edx, edx
  jz @@NullString
  mov esi, ecx
  dec esi
  mov ecx, [edx-4]
  cmp esi, ecx
  jle @@Continue
  xor eax, eax
  ret
  
@@Continue:
  add ecx, esi
  add edx, esi
  push ebx
  mov ebx, eax
  cmp ecx, 16
  jl @@Small
  ...
  ...
end;
Ich hab kein Delphi, um es zu testen.. Aber ich vermute, dass es so läuft. Was ich hier tue, entspricht weitgehend deiner Vermutung: am Anfang sagen wir einfach, dass der String aStart Zeichen kürzer ist als tatsächlich und setzen den Anfang des Strings (für die Funktion) auf das Zeichen bei aStart.
@Dax:
Dann sollte es hinter @@Continue heißen
sub ecx,esi
Oder hab ich da was falsch verstanden?

Und mehr grundsätzlicher Natur :
ESI sollte nicht verändert werden (oder vorher gepushed und vor dem RET wieder gepopt werden).


@Alzaimar:
Ich habe meine PosEx - Funktion inzwischen erweitert, sie kann jetzt vorwärts und rückwärts suchen, in beiden Fällen mit beliebigem AStart. Und : Wenn nur ein Zeichen gesucht wird, dann werden (sowohl für Vorwärtssuche wie auch Rückwärtssuche) Routinen benutzt, die auf dem Code von John O'Harrow basieren.
Angehängte Dateien
Dateityp: pas test_02_203.pas (28,5 KB, 55x aufgerufen)
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz