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;