Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#2

AW: XE2 Stringfunktion + ASM code : function CountString(...)

  Alt 21. Sep 2011, 09:56
Ein paar [delphi]-Tags wären nicht schlech.

Delphi-Quellcode:
begin
...
ASM
Geht unter 64 Bit garnicht mehr, da es dort kein Inline-Assemler mehr gibt (in Delphi).
Prozeduren müssen entweder in Pascal oder Assembler geschrieben sein. (gemischt ist nicht mehr ... je Prozedur)

also entweder
Delphi-Quellcode:
function CountString(Const substr, s: WideString): Word;
{$IFDEF CPUX86}
asm
...
end;
{$ENDIF CPUX86}
{$IFDEF CPUX64}
asm
...
end;
{$ENDIF CPUX64}
oder
Delphi-Quellcode:
function CountString(Const substr, s: WideString): Word;
asm
{$IFDEF CPUX86}
...
{$ENDIF CPUX86}
{$IFDEF CPUX64}
...
{$ENDIF CPUX64}
end;

Du könntest dir die WideString-Varianten nehmen und müßtest unter Win64 die Register anpassen.
Unter 32 Bit lagen die ersten Parameter in EAX, EDX, ECX, welche aber bei 64 Bit nun anders vereilt sind. Irgenwo wurde das hier, in der DP, vor Kurzem mal erwähnt.

Für den Anfang also einfach nur die entsprechenden 32-Bit-Register der 64-Bit-Architektur verwenden.


Wenn ich mal die Zeit finde, läßt sich dann bestimmt noch einiges Optimieren. (mit MMX, SSE und Co.)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (21. Sep 2011 um 10:02 Uhr)
  Mit Zitat antworten Zitat