AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Inline ASM

Ein Thema von Lillebrohr · begonnen am 7. Okt 2003 · letzter Beitrag vom 9. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
Lillebrohr
(Gast)

n/a Beiträge
 
#1

Inline ASM

  Alt 7. Okt 2003, 22:05
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Inline ASM

  Alt 7. Okt 2003, 22:27
hast du ebx wiederhergestellt? bzw verwendet.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Lillebrohr
(Gast)

n/a Beiträge
 
#3

Re: Inline ASM

  Alt 7. Okt 2003, 22:29
Guten Tag,

ja ich habe ebx benutzt. Aber warum muss ich das "wiederherstellen" ??



MfG


LB
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Inline ASM

  Alt 7. Okt 2003, 22:39
... Weil Delphi dann die Daten in [ebx] benutzen kann.
  Mit Zitat antworten Zitat
Lillebrohr
(Gast)

n/a Beiträge
 
#5

Re: Inline ASM

  Alt 7. Okt 2003, 22:49
Guten Tag,


Naja, also einfach ebx am Anfang sichern und am Ande wieder zurücksetzen.


Code:
asm
mov iEBX, ebx
...

mov ebx, iEBX


end;
oder soll ich es besser über den Stack machen ??

MfG

LB
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#6

Re: Inline ASM

  Alt 7. Okt 2003, 22:49
in ebx steht die Instance-Adresse des objectes in dem die Prog. gerade ausgeführt wird.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Inline ASM

  Alt 8. Okt 2003, 00:04
Und bei Kylix die GOT (Global Offset Table).
  Mit Zitat antworten Zitat
Lillebrohr
(Gast)

n/a Beiträge
 
#8

Re: Inline ASM

  Alt 8. Okt 2003, 00:54
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
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Inline ASM

  Alt 8. Okt 2003, 03:35
Delphi-Quellcode:
asm
  PUSH EBX

  POP EBX
end;
Unter Windows musst du nichts weiter beachten.
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
  Mit Zitat antworten Zitat
Lillebrohr
(Gast)

n/a Beiträge
 
#10

Re: Inline ASM

  Alt 8. Okt 2003, 18:47
Guten Tag,

hmm danke für die schnelle Antwort.
Aber ich habe gemerkt das es funktioniert wenn ich ebx und alle Register sichere.

Code:
asm
pushad
...
popad
end;
Aber bei nonVCL funktioniert das nich. Warum ? Was gibt es sonst noch für Möglichkeiten ???



MfG


LB
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz