Die *.tam Dateien enhalten den Binärcode der TAM-Befehle eines Programmes. Du musst den Quellcode erstmal durch den Compiler laufen lassen und auf die erzeugte *.tam Datei dann den Disassembler laufen lassen.Toa hat geschrieben:In welchem Format sind denn diese *.tam files? Wenn ich mit notepad++ für Aufgabe 3.2 den Quellcode als *.tam speichere kann der Disassembler die Datei nicht einlesen. Grüße T0a
3. Aufgabenblatt
Re: 3. Aufgabenblatt
Compiler 1 Tutor WS 12/13
Re: 3. Aufgabenblatt
Hallo,
liegt denn der Sinn von Aufgabe 3.4 einzig darin, mehr als 360 Felder zu zeichnen, jeweils mit Basistyp, benutzerdefiniertem Typ und Record-/Array-Zugehörigkeit?
Wenn ja wären das ja geschätzte 5 Seiten mit jeweils gleichem Inhalt, nämlich den board-Einträgen.
Anders gefragt: Sollen wir jedes Feld zeichnen oder reichen Auslassungszeichen? Und ist die Aufgabe wirklich so einfach, wie es auf den ersten Blick scheint?
liegt denn der Sinn von Aufgabe 3.4 einzig darin, mehr als 360 Felder zu zeichnen, jeweils mit Basistyp, benutzerdefiniertem Typ und Record-/Array-Zugehörigkeit?
Wenn ja wären das ja geschätzte 5 Seiten mit jeweils gleichem Inhalt, nämlich den board-Einträgen.
Anders gefragt: Sollen wir jedes Feld zeichnen oder reichen Auslassungszeichen? Und ist die Aufgabe wirklich so einfach, wie es auf den ersten Blick scheint?
Re: 3. Aufgabenblatt
Hey,
ich hab auch nur den ersten Eintrag und letzten mit Index angegeben und dazwischen mit "..." gearbeitet. Ich denke das ist vollkommen ok und zeigt das man es verstanden hat. Grüße T0a
ich hab auch nur den ersten Eintrag und letzten mit Index angegeben und dazwischen mit "..." gearbeitet. Ich denke das ist vollkommen ok und zeigt das man es verstanden hat. Grüße T0a
Re: 3. Aufgabenblatt
Bei Arrays reicht es den ersten und letzten Eintrag zu zeichnen. Dazwischen können Auslassungszeichen verwendet werden.d_glenz hat geschrieben:Hallo,
liegt denn der Sinn von Aufgabe 3.4 einzig darin, mehr als 360 Felder zu zeichnen, jeweils mit Basistyp, benutzerdefiniertem Typ und Record-/Array-Zugehörigkeit?
Wenn ja wären das ja geschätzte 5 Seiten mit jeweils gleichem Inhalt, nämlich den board-Einträgen.
Anders gefragt: Sollen wir jedes Feld zeichnen oder reichen Auslassungszeichen? Und ist die Aufgabe wirklich so einfach, wie es auf den ersten Blick scheint?
Compiler 1 Tutor WS 12/13
Re: 3. Aufgabenblatt
Ok, vielen Dank für eure Hilfe!
Re: 3. Aufgabenblatt
Hier habe ich nochmal zwei Fragen zur Musterlösung zur Aufgabe 3.5.
1 : Erstmal habe ich in meiner Lösung den Stack von oben nach unten wachsend gezeichnet. Wäre das falsch?
Soweit ich weiß, wächst der Stack normalerweiße eben auch genau von oben nach unten. Bei der TAM aber genau umgekehrt. Wie sollen wir das in der Klausur machen?
2: In dem Bild Listing 6: before mfib(3, var a) aus der Musterlösung ist mir nicht so ganz ersichtlich, wann ein Wert auf dem Stack liegt und wann eine Adresse auf dem Stack liegt.
In dem aktuellen Stack frame wurde dort erstmal Platz für die Variablen a,b gemacht und dann wurden die Parameter auf den Stack gelegt. Also zuerst der WERT 3 und dann die Adresse der Variable a. Hier frage ich mich dann erstens woran man in der Musterlösung unterscheiden kann, wann ein Wert auf dem Stack liegt und wann eine Adresse auf dem Stack liegt. Außerdem frage ich mich, wieso die Variable a relativ zum SB auf dem Stack gelegt worden ist? Wäre es dort nich auch ok gewesen, die Variable relativ zum LB auf dem Stack abzulegen??? Oder wird da einfach die Adresse von der Stackadresse |6| auf dem Stack platziert? Dann frage ich mich aber wieder wieso die |3| darunter steht. Wäre schon dazu nochmal eine erklärung zu bekommen, wie genau wir das in der Klausur handhaben sollen.
1 : Erstmal habe ich in meiner Lösung den Stack von oben nach unten wachsend gezeichnet. Wäre das falsch?
Soweit ich weiß, wächst der Stack normalerweiße eben auch genau von oben nach unten. Bei der TAM aber genau umgekehrt. Wie sollen wir das in der Klausur machen?
2: In dem Bild Listing 6: before mfib(3, var a) aus der Musterlösung ist mir nicht so ganz ersichtlich, wann ein Wert auf dem Stack liegt und wann eine Adresse auf dem Stack liegt.
In dem aktuellen Stack frame wurde dort erstmal Platz für die Variablen a,b gemacht und dann wurden die Parameter auf den Stack gelegt. Also zuerst der WERT 3 und dann die Adresse der Variable a. Hier frage ich mich dann erstens woran man in der Musterlösung unterscheiden kann, wann ein Wert auf dem Stack liegt und wann eine Adresse auf dem Stack liegt. Außerdem frage ich mich, wieso die Variable a relativ zum SB auf dem Stack gelegt worden ist? Wäre es dort nich auch ok gewesen, die Variable relativ zum LB auf dem Stack abzulegen??? Oder wird da einfach die Adresse von der Stackadresse |6| auf dem Stack platziert? Dann frage ich mich aber wieder wieso die |3| darunter steht. Wäre schon dazu nochmal eine erklärung zu bekommen, wie genau wir das in der Klausur handhaben sollen.
meine Testsignatur 

Re: 3. Aufgabenblatt
Solang erkennbar ist, wohin die Adressen größer werden, ist es eigentlich egal. Trotzdem würde ich empfehlen von unten anch oben zu zeichnen, da es der TAM entspricht.himbaer hat geschrieben:Hier habe ich nochmal zwei Fragen zur Musterlösung zur Aufgabe 3.5.
1 : Erstmal habe ich in meiner Lösung den Stack von oben nach unten wachsend gezeichnet. Wäre das falsch?
Soweit ich weiß, wächst der Stack normalerweiße eben auch genau von oben nach unten. Bei der TAM aber genau umgekehrt. Wie sollen wir das in der Klausur machen?
Das ist wie in der Realität: Es ist i.A. nicht möglich zu unterscheiden ob es ein Wert oder eine Adresse ist, wenn man sich nur den Speicher anschaut. Hier musst du auf den Code zurückgreifen um zu schaun was es ist.himbaer hat geschrieben:2: In dem Bild Listing 6: before mfib(3, var a) aus der Musterlösung ist mir nicht so ganz ersichtlich, wann ein Wert auf dem Stack liegt und wann eine Adresse auf dem Stack liegt.
In dem aktuellen Stack frame wurde dort erstmal Platz für die Variablen a,b gemacht und dann wurden die Parameter auf den Stack gelegt. Also zuerst der WERT 3 und dann die Adresse der Variable a. Hier frage ich mich dann erstens woran man in der Musterlösung unterscheiden kann, wann ein Wert auf dem Stack liegt und wann eine Adresse auf dem Stack liegt.
Es wird die Adresse der Daten auf den Stack gelegt, was hier 6 ist.himbaer hat geschrieben:Außerdem frage ich mich, wieso die Variable a relativ zum SB auf dem Stack gelegt worden ist? Wäre es dort nich auch ok gewesen, die Variable relativ zum LB auf dem Stack abzulegen??? Oder wird da einfach die Adresse von der Stackadresse |6| auf dem Stack platziert?
Da das der Inhalt des Stacks vor dem Callkommando zu mfib(3, var a) ist, ist hier die 3 der Wert von n.himbaer hat geschrieben:Dann frage ich mich aber wieder wieso die |3| darunter steht.
Im Zweifel sollte man sich an die Musterlösung halten. Jedoch ist es in der Klausur hoffentlich beschrieben, wie es zu handhaben ist bei Unklarheiten. Zur Not kann man auch in der Klausur eine Frage stellen.himbaer hat geschrieben:Wäre schon dazu nochmal eine erklärung zu bekommen, wie genau wir das in der Klausur handhaben sollen.
Compiler 1 Tutor WS 12/13
Re: 3. Aufgabenblatt
Super vielen dank. Nur eine kleine Sache noch 
Wie wurde dort die retourn Adresse berechnet?

Wie wurde dort die retourn Adresse berechnet?
meine Testsignatur 

-
- Endlosschleifenbastler
- Beiträge: 192
- Registriert: 10. Nov 2011 19:42
Re: 3. Aufgabenblatt
Mit Magie... oder einer umgebauten Version des Interpretershimbaer hat geschrieben:Wie wurde dort die retourn Adresse berechnet?

Da diese aber nicht ohne konkrete Erzeugung des TAM Codes berechnet werden kann, fließt diese nicht in die Bewertung mit ein, außer das der Platz vorhanden sein muss.