In Assembler kann ich dierekt auf Register zugreifen. Wenn ich in C eine Variable erstelle, zb. int i, kann man feststellen, welchem Register diese Variable dann entspricht?
Anfaenger schrieb: > kann man feststellen, welchem Register > diese Variable dann entspricht? Schau ins Assembler-Listing. Gruß Oliver
Anfaenger schrieb: > Wenn ich in C eine Variable erstelle, zb. int i, .. will ich nicht wissen wo sie der Compiler hinlegt, deswegen verwende ich ja C und nicht Assembler. Wenn ich in Excel eine Variable verwende wo ist die dann? MfG Klaus
Klaus schrieb: > will ich nicht wissen wo sie der Compiler hinlegt, deswegen verwende ich > ja C und nicht Assembler. Wenn ich in Excel eine Variable verwende wo > ist die dann? und wenn ich gerne im Debug-Modus den Variableninhalt verfolgen möchte und mir die Registerwerte in dem Registerfenster anzeigen lasse dazu, woher soll ich es dann wissen?
Anfaenger schrieb: > Klaus schrieb: >> will ich nicht wissen wo sie der Compiler hinlegt, deswegen verwende ich >> ja C und nicht Assembler. Wenn ich in Excel eine Variable verwende wo >> ist die dann? > > und wenn ich gerne im Debug-Modus den Variableninhalt verfolgen möchte > und mir die Registerwerte in dem Registerfenster anzeigen lasse dazu, > woher soll ich es dann wissen? Dann fragst du den Debugger, welchen Wert i hat, dafür ist er ja da. Möglicherweise ist i ja garnicht in einem Register sondern irgendwo im Speicher. MfG Klaus
Wo steht denn, daß Variablen in Registern abgelegt werden? Diese werden typischerweise im RAM oder EEPROM evtl. Flash abgelegt. Wenn sie dann benutzt werden, kann es durchaus vorkommen, das sie in ein Register kopiert werden. Das hängt zuletzt vom uC und vom Compiler ab. Beim debuggen sollte es reichen, den Variableninhalt beobachten zu können. Gruß
variable schrieb: > RAM oder EEPROM evtl. Flash abgelegt. aha, und wenn ich ne Zählvariable hab, die oft ihren Wert verändert und dann im EEPROM abgelegt wird, der nur ne begrenzte Beschreibkarkeit hat ..., ist ja echt unpraktisch, dass ich nicht selber bestimmen kann, in welchem Speicherbereich der die Variable hinlegt.
Nein, Zählvariablen liegen in der Regel im RAM oder einem Register. Ist aber egal, wenn du die "Watch"-Funktion deines Debuggers nutzt. Gruß Marius
Du musst den Speicherort der Variablen sogar definieren. Standardmäßig werden Variablen im RAM abgelegt. Das kannst Du natürlich änden. Ein Zähler im EEPROM macht nur dann Sinn, wen die Intervalle lange genug sind wo Du speicherst, oder Du willst den EEPROM killen. Wo liegt eigentlich Dein Problem? Gruß
Anfaenger schrieb: > ist ja echt unpraktisch, dass ich nicht selber bestimmen kann, in > welchem Speicherbereich der die Variable hinlegt. Entweder du programmierst in einer höheren Sprache und kümmerst dich nicht darum, ob dein Prozessor überhaut Register hat und wenn, wieviele es sind. Oder du machst alles in Assembler. MfG Klaus
variable schrieb: > Wo liegt eigentlich Dein Problem? Dass ich nicht bedacht hab, dass man mit einem C-Programm nicht die Werte der Register so beobachten kann wie in einem Assebler-Programm. Zwar verändern sich die Register auch von Schritt zu Schritt, aber die Zordnung kenne ich nicht. Marius Wensing schrieb: > wenn du die "Watch"-Funktion Jetzt muss ich nur noch rauskriegen, wo ich die Watchfunktion finde.
Im gdb tippen: help watch Aber evtl. willst du nicht watch, sondern display: help display
Anfaenger schrieb: > und wenn ich gerne im Debug-Modus den Variableninhalt verfolgen möchte Klaus schrieb: > Dann fragst du den Debugger, welchen Wert i hat, dafür ist er ja da. So ist es. Der Debugger wird dir schon den richtigen Wert zeigen, egal, ob die Variable aktuell (oder überhaupt nur) in einem Register lebt, oder im Ram. Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.