pushl %%esi

Benutzeravatar
ut53xuco
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 20. Nov 2011 18:07

pushl %%esi

Beitrag von ut53xuco »

wieso funktioniert das hier nicht?

"pushl %%esi\n"

Ich will esi und edi sichern damit ich sie später schneller zurücksetzten kann mit "popl %%esi\n"

skY
Erstie
Erstie
Beiträge: 20
Registriert: 21. Sep 2011 15:17

Re: pushl %%esi

Beitrag von skY »

Das mach ich in meinem Inline Assembler Code aber auch relativ oft, funktioniert problemlos. Gibts eine genauere Problembeschreibung?

Benutzeravatar
ut53xuco
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 20. Nov 2011 18:07

Re: pushl %%esi

Beitrag von ut53xuco »

Ich bekomme einen Segmentation fault sobald ich das dazu schreibe

Benutzeravatar
ut53xuco
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 20. Nov 2011 18:07

Re: pushl %%esi

Beitrag von ut53xuco »

Hat sich geklärt... ich habe mich vertan es lag nicht an pushl

mw1039
Computerversteher
Computerversteher
Beiträge: 346
Registriert: 12. Apr 2011 12:18

Re: pushl %%esi

Beitrag von mw1039 »

War das Problem, dass der Compiler bei einem Inline-Assembler-Block nicht angeben kann, in welcher Zeile genau der Fehler vorliegt und stattdessen einfach nur die erste Zeile des Blocks oder so aehnlich angibt?

Koennte fuer die folgenden Threadleser relevant sein.

core
Mausschubser
Mausschubser
Beiträge: 55
Registriert: 3. Sep 2011 16:29

Re: pushl %%esi

Beitrag von core »

mw1039 hat geschrieben:War das Problem, dass der Compiler bei einem Inline-Assembler-Block nicht angeben kann, in welcher Zeile genau der Fehler vorliegt und stattdessen einfach nur die erste Zeile des Blocks oder so aehnlich angibt?
Wenn ich bei meinem Code versucht habe Segmentation Faults im Debugger (gdb) zu analysieren, wurde als Zeilenangabe jeweils die letzte Zeile des asm-Blocks gegeben. (Also die, mit dem abschließenden Semikolon)

Allgemeine Frage:
gibt es überhaupt *irgendeine* Möglichkeit, Inline-Assembler sinnvoll zu debuggen? Bzw., was ist den hierbei quasi die "best practice"?

Viele Grüße
core

kbraden
Mausschubser
Mausschubser
Beiträge: 98
Registriert: 15. Okt 2010 20:35

Re: pushl %%esi

Beitrag von kbraden »

Weiss nicht ob das best-practice ist:

per "Ctrl-X gefolgt von a" den TUI Modus starten, dann per "layout asm" gefolgt von "layout regs" die Assembler/Register-Anzeige holen (du bist dann halt nicht mehr auf File-Ebene -> d.h. du siehst auch bei C-Code den generierten Assembler-Code).

Mittels "tui reg next" kannst du die Registerklassen aendern (fuer SSE beispielsweise - da steht aber z.t. quatsch drin! Ich hab mir immer die 16 * ints angeschaut statt den 4 * float).

Mit "stepi" oder "nexti" kann man durch Instruktionen steppen.

Mit "p $eax" kann man Register ausgeben, mit "x/x $esi" kann man Speicher an bestimmten Adressen inspizieren.

Mehr habe ich nicht gebraucht.

LG

jokke
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 6. Sep 2010 12:18
Kontaktdaten:

Re: pushl %%esi

Beitrag von jokke »

Danke kbraden!

Sehr hilfreicher Post. Google konnte mir nicht weiterhelfen. So kann man's echt debuggen!

Antworten

Zurück zu „Archiv“