![]() |
Inline ASM
Guten Tag,
also ich habe ein Programm geschrieben das zu 90% aus inline ASM besteht. So am ende hab ich einen Wert aus einem Register einer Variable übergeben. mov iResult, eax nach dem abschließenden end; möchte ich nun den Inhalt in einem Edit ausgeben. Doch wenn ich nun neu kompiliere und auf den Button drücke der dann den Wert in dem Edit Feld anzeigen lassen soll. Aber nach dem Drücken kommt eine Meldung das er an der Adresse FFFFFF nicht zugreifen kann. So wenn ich aber mit mit Showmessage rangehe dann funktioniert es. Aber warum ??? Kann sich jemand das erklären ?? MfG LB |
Re: Inline ASM
hast du ebx wiederhergestellt? bzw verwendet.
|
Re: Inline ASM
Guten Tag,
ja ich habe ebx benutzt. Aber warum muss ich das "wiederherstellen" ?? :( MfG LB |
Re: Inline ASM
... Weil Delphi dann die Daten in [ebx] benutzen kann.
|
Re: Inline ASM
Guten Tag,
Naja, also einfach ebx am Anfang sichern und am Ande wieder zurücksetzen.
Code:
oder soll ich es besser über den Stack machen ??
asm
mov iEBX, ebx ... mov ebx, iEBX end; MfG LB |
Re: Inline ASM
in ebx steht die Instance-Adresse des objectes in dem die Prog. gerade ausgeführt wird.
|
Re: Inline ASM
Und bei Kylix die GOT (Global Offset Table).
|
Re: Inline ASM
Guten Morgen,
also mach ich es so wie oben beschrieben. Oder wie macht ihr das ??? MfG LB /Edit aber warum funzt es dann mit showmessage aber nicht mit edit1.text ? \Edit |
Re: Inline ASM
Delphi-Quellcode:
Unter Windows musst du nichts weiter beachten.
asm
PUSH EBX POP EBX end; Unter Kylix steht in EBX die "Globale Object Table" und diese sollte in deinem Assemblercode NIEMALS überschrieben werden falls diese Assembler Funktion weitere externe CALLs durchführt. Am besten ist es auf die Register EDI,ESI auszuweichen und EBX generell als letzte Wahl zu sehen. Gruß hagen |
Re: Inline ASM
Guten Tag,
hmm danke für die schnelle Antwort. Aber ich habe gemerkt das es funktioniert wenn ich ebx und alle Register sichere.
Code:
Aber bei nonVCL funktioniert das nich. Warum ? Was gibt es sonst noch für Möglichkeiten ???
asm
pushad ... popad end; MfG LB |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 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