Thema: Delphi UnicodeString Swap?

Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: UnicodeString Swap?

  Alt 4. Nov 2013, 22:46
Mein Vorschlag:
Delphi-Quellcode:
procedure SwapString(var S1, S2: string);
{$if defined(CPUX86)}
asm
  push [edx]
  mov ecx, [eax]
  mov [edx], ecx
  pop ecx
  mov [eax], ecx
end;
{$elseif defined(CPUX64)}
asm
  push [rdx]
  mov r9, [rcx]
  mov [edx], r9
  pop r9
  mov [rcx], r9
end;
{$else}
var
  Temp: string;
begin // ergibt mehr als 200 Assemblerbefehle
  Temp := S1;
  S1 := S2;
  S2 := Temp;
end;
{$endif}
Bei ARM kann ich das jetzt nicht direkt aus dem Hut ziehen, deshalb dafür rein Pascal. Durch die Compiler Magic, die hinter den String Zuweisungen abläuft, ist der Aufwand da aber um ein Vielfaches höher als bei dem reinen Pointertausch.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat