Hausübung 2

osterhase
Erstie
Erstie
Beiträge: 20
Registriert: 26. Okt 2005 11:57

Hausübung 2

Beitrag von osterhase »

Hallo,
habe massive Probleme bei der Bearbeitung der zweiten Hausübung.
Bei der H2.1 steh ich aufm Schlauch, was überhaupt mit "höchstens eine Verzweigungsoperation" gemeint ist

Auch bei der 2.2 steh ich mit disesn Speicheradressierungen (0x7ffff fffc) etwas ratlos da? Keine Ahnung wie und was ich dort berechnen muss. Wenn ich jetzt meinetwegen sub $sp $sp 4 mache, müsste ich von dieser Speichtestelle auch 4 abziehen? Quasi von c auf 8 (0x7ffff fff8)?

Wird das noch in der Vorlesung bearbeitet? Wenn ja bringt mir das leider auch nicht viel, da ich in einer Montagsübung bin und somit vor den Vorlesungen abgeben muss...

Wer weiß Rat?

Greetz

Julius
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 238
Registriert: 5. Okt 2005 15:52

Beitrag von Julius »

Mich wuerde auch interessieren, was bei der 2.1 gemeint ist.

ich dachte: bedingter Sprung = Verzweigung

In jeden Schleifendurchlauf wird allerdings nur einmal der bedingte Sprung bearbeitet. !? Da muss ich etwas falsch verstanden haben.

Kann mich jemand da mal aufklaeren?

danke schonmal

osterhase
Erstie
Erstie
Beiträge: 20
Registriert: 26. Okt 2005 11:57

Beitrag von osterhase »

So, die 2.2 habe ich jetzt lösen koennen, vorrausgesetzt das meine annahme die hexadezimahlzahle einfach zu subtrahieren richtig ist (und ich zude. auch noch die hexadezimahlzahl so auf die schnelle begriffen habe)

Aber die 2.1 bleibt mir ein rätsel

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Thorti »

Hallo,

zur 2.1: Schaut euch das Programm nochmal genau an. Es ist nicht in jedem Schleifendurchlauf nur ein Sprung enthalten (Verzweigung != bedingter Sprung).

zur 2.2: Ja, mit HEX-Zahlen kann man "ganz normal" rechnen.

Gruss Thorti
Assistent zur Vorlesung TGDI im WS 11/12

Julius
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 238
Registriert: 5. Okt 2005 15:52

Beitrag von Julius »

Thorti hat geschrieben:Hallo,
zur 2.1: Schaut euch das Programm nochmal genau an. Es ist nicht in jedem Schleifendurchlauf nur ein Sprung enthalten (Verzweigung != bedingter Sprung).
Gruss Thorti
das habe ich ja fast vermutet. Kannst du kurz erklären, was dann mit Verzweigung in diesem Zusammenhang gemeint ist?

Laut Wikipedia heisst es:
Aufgrund einer Bedingung wird der Programmfluss (die Abfolge der Ausführung der Befehle) verzweigt. Im Gegensatz zu Schleifen, die den Programmablauf nach oben zurückführen, geht der Ablauf bei einer Verzweigung immer über einen von mehreren Wegen weiter nach unten.
Quelle: link

Wenn ich das nun auf Assembler übertrage kann ich, meines Verständnisses nach, nur "verzweigen" (im Sinne des letzten Satzes von Wikipedia), wenn ich irgendwo hinspringe oder nicht, dann splitte ich den Weg in zwei Wege auf. Und wie soll denn das funktionieren ohne einen bedingten Sprung? Was mich wieder an den Punkt bringt: Könntest du uns kurz erklären, warum das so ist...
Verzweigung != bedingter Sprung
danke schonmal

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Thorti »

Hallo,

hm, wenn ich das auf Wikipedia so lese dann muss ich wohl
Thorti hat geschrieben:Verzweigung != bedingter Sprung
zurücknehmen :roll:
Ich hatte Verzweigung als Sprung allgemein verstanden...

Dann ersetzt im Übungsblatt "Verzweigungsoperation" durch "Sprung". Dann sollte es klarer werden was gemeint ist.

Gruss Thorti
Assistent zur Vorlesung TGDI im WS 11/12

Julius
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 238
Registriert: 5. Okt 2005 15:52

Beitrag von Julius »

Vielen Dank für die Hilfe ;-) Dann macht das schon viel mehr Sinn. *DaumenHoch*

cracker2010
Mausschubser
Mausschubser
Beiträge: 51
Registriert: 10. Okt 2005 22:14

Beitrag von cracker2010 »

Kann mir mal bitte jemand erklären, was ich mit dem Argumentregister $a0 anfangen? Dieses wird ja nicht im Programmcode verwendet, deswegen hätte ich eigentlich gesagt, dass es keine Auswirkungen hat. Allerdings wäre es ziemlich sinnlos, sich gleich in 2 Aufgabenteilen drauf zu beziehen, wenn es wirklich keine Auswirkungen hat.

dammel
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 8. Okt 2004 12:57
Wohnort: Mörfelden-Walldorf
Kontaktdaten:

Beitrag von dammel »

Hätte da auch mal noch eine Frage.

Wenn bei einem Sprungbefehl der Sprung nicht ausgeführt wird zählt der Befehl dann als ausgeführt oder nicht?

Weil der Befehl ja eigentlich abgearbeitet sein müsste sollte das so sein aber der Sprung wurde nicht "ausgeführt" was mich durch die Aufgabenstellung momentan etwas verwirrt.
"Manchen gab Gott die Kraft Dinge zu verändern, mir gab er die Kraft zu ertragen was ich nicht ändern kann."
Frederik Hahn

Bigge
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 26. Okt 2005 07:27
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Bigge »

cracker2010 hat geschrieben:Kann mir mal bitte jemand erklären, was ich mit dem Argumentregister $a0 anfangen? Dieses wird ja nicht im Programmcode verwendet, deswegen hätte ich eigentlich gesagt, dass es keine Auswirkungen hat. Allerdings wäre es ziemlich sinnlos, sich gleich in 2 Aufgabenteilen drauf zu beziehen, wenn es wirklich keine Auswirkungen hat.
Redest Du von der Aufgabe 2.2? Da wird das Argumentregister taucht doch in den Zeilen 4, 10, 12 und 15 auf, oder nicht?
dammel hat geschrieben:Wenn bei einem Sprungbefehl der Sprung nicht ausgeführt wird zählt der Befehl dann als ausgeführt oder nicht?

Weil der Befehl ja eigentlich abgearbeitet sein müsste sollte das so sein aber der Sprung wurde nicht "ausgeführt" was mich durch die Aufgabenstellung momentan etwas verwirrt.
Meines Wissens nach gilt er dann natürlich als ausgeführt, er musste ja, wie Du sagst, bearbeitet werden und hat dementsprechend Takte verbraten...

Gruß,
Bigge
Was ist weiß und versteckt sich hinter'm Baum?
- 'Ne schüchterne Milch!

The One and Only Markus
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 169
Registriert: 10. Nov 2005 19:28
Wohnort: Darmstadt

Beitrag von The One and Only Markus »

Ich denke man darf hier 'ausführen' und 'auswerten' nicht verwechslen. Der Befehl heißt ja 'springe wenn bound <=0'. Den Befehl muss man auswerten um zu wissen ob bound <=0 ist oder nicht. Ausgeführt wird der Befehl aber nur wenn bound wirklich <= 0 ist.

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Beitrag von mantra »

Naja, eigentlich müsste man den Branch-Befehl deuten als "Wenn die Bedingung zutrifft, springe zum Label, sonst in die nächste Zeile". Der Befehl wird also so oder so ausgeführt. Nur der Sprung wird evtl. nicht ausgeführt, wobei genaugenommen auch der Schritt in die nächste Zeile ein Sprung ist.

The One and Only Markus
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 169
Registriert: 10. Nov 2005 19:28
Wohnort: Darmstadt

Beitrag von The One and Only Markus »

Ich glaube den Sprung in die nächste Zeile kann man nicht als extra Befehl werten. das passiert automatisch. Der Befehl lautet eher "Wenn die Bedingung zutrifft, springe zum Label, sonst tu nichts". Sonst wäre ja jeder Befehl der kein bedingert Sprung ist ein unbedingter Sprung:

- add "$t0, $s0, $s1": Addiere $s0 zu $s1, speicher das Ergebnis in $t0 und spring in die nächste Zeile.
- "nop" wäre dann ja auch ein unbedingter Sprung: Tu nichts und spring in die nächste Zeile.
- usw.

Ich glaube kaum dass das sinnvoll wäre.

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Thorti »

Hallo,

also soviel kann ich mal sagen:
- der normale Sprung nach einem Befehl zum nächsten Befehl ist kein extra Befehl (hm, ist das jetzt verständlich :roll: ...)

Gruss Thorti
Assistent zur Vorlesung TGDI im WS 11/12

cracker2010
Mausschubser
Mausschubser
Beiträge: 51
Registriert: 10. Okt 2005 22:14

Beitrag von cracker2010 »

Bigge hat geschrieben:
cracker2010 hat geschrieben:Kann mir mal bitte jemand erklären, was ich mit dem Argumentregister $a0 anfangen? Dieses wird ja nicht im Programmcode verwendet, deswegen hätte ich eigentlich gesagt, dass es keine Auswirkungen hat. Allerdings wäre es ziemlich sinnlos, sich gleich in 2 Aufgabenteilen drauf zu beziehen, wenn es wirklich keine Auswirkungen hat.
Redest Du von der Aufgabe 2.2? Da wird das Argumentregister taucht doch in den Zeilen 4, 10, 12 und 15 auf, oder nicht?
Nein, ich spreche nicht von der Aufg. 2.2, sondern von der 2.1. Dort ist ja gefragt, was passiert, wenn $a0 mit 10 beschrieben wird. Damit kann ich irgendwie nichts anfangen, da $a0 nicht im Programm verwendet wird. Ich weiß daher nicht genau, wozu man sich auf dieses Register bezieht. Nach meinem Verständnis von der Assemblerprogrammierung, könnte man alle verwendbaren Register beschreiben, außer den verwendeten, und es dürfte sich nichts ändern. Der Brotfresser führt ja nur die Befehle aus und verwendet nur die Register, die man ihm vorgibt. In meinen Augen wäre alles andere auch ziemlich sinnlos.

Antworten

Zurück zu „Archiv“