Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#26

Re: Verdrehte Bits (Wilde Pointereien)

  Alt 2. Sep 2007, 16:44
Zitat von Quake:
Danke für dein Angebot der Hilfe, aber ich habe es schon hin bekommen. (siehe oben)

Ich habe aber noch eine kleine Abänderung gemacht, jetzt mit einem Pointer. (wieder die Vereinfachte Version)

Delphi-Quellcode:
procedure xyz(Zahl: longword);
var
  p: ^longword;
begin
  .
  .
  .
  p^ := @Zahl;
  asm
    mov edx, p;
    mov eax, [edx];
    bswap eax;
    mov [edx], eax;
  end;
  .
  .
  .
end;
Hmpf ... nicht gut. Ich sehe, daß du die Zahl nicht zurückgeben willst, also wird sie vermutlich nach dem Assemblerblock verarbeitet. Nur als kleiner Tip, meine Funktion von oben sollte deutlich effektiver sein. Warum? Weil du überflüssige Dinge machst und mal davon abgesehen auch noch riskant. Was passiert mit EDX und EAX vor und nach dem Assemblerblock? Weißt du nicht? Richtig! Also müssen sie gesichert werden!

Delphi-Quellcode:
// Siehe dein Code
  p^ := @Zahl;
  asm
    push edx
    push eax
    mov edx, p;
    mov eax, [edx];
    bswap eax;
    mov [edx], eax;
    pop eax
    pop edx
  end;
  Mit Zitat antworten Zitat