Blatt 13, Aufgabe 5
30.01.2010 19:33:08
hi,

darf man wenn man lsh und rsh programmiert hat, diese als Unterfunktionen für c) und d) verwenden?

darf man wie im Beispielprogramm von neumi Konstanten definieren?
z.B.:
x: DW 1
Re: Blatt 13, Aufgabe 5
31.01.2010 00:03:40
@Manu: So wie ich es verstanden habe, sind alles was mit : zu tun hat Sprungmarken und dürfen laut Aufgabenstellung nicht verwendet werden, aber eben nur soweit ich es verstanden habe ;)

Mhh gut meine Frage hat sich inzwischen erledigt. Trotzdem kurz die Anmerkung: Sofern ich das richtig verstanden habe, bezieht sich der beschriebene Bug nicht nur auf "0x80000000" sondern auf alle Zahlen ? "0x80000000", weil sie von Neumi als Befehle und nicht als Daten interpretiert werden, da Neumi keinen fest zugewiesenen Datenspeicher besitzt. Diese Zahlen können auch nicht mit den Immediate-Befehlen genutzt werden. Richtig?



1 mal bearbeitet. Zuletzt am 31.01.2010 00:56 von Magmaster.
Re: Blatt 13, Aufgabe 5
31.01.2010 00:32:46
gibt es irgend einen vernünftigen Grund, warum man keine Sprungmarken einabauen darf??
Damit wird das Programm doch nur übersichtlicher und bedeutend einfacher für die Tutoren zu lesen und verstehen...

kann es sein, dass am Schluss ein Fehler im Blatt ist?
Was will man denn mit dern Zahl 10^31 anfangen? ist nicht die Zahl 2^31 gemeint? :-)



1 mal bearbeitet. Zuletzt am 31.01.2010 01:05 von Manuel Bührer.
Re: Blatt 13, Aufgabe 5
31.01.2010 00:56:44
Seh ich auch so :)
Re: Blatt 13, Aufgabe 5
31.01.2010 12:02:38
Puuhhhh... gut, dann mal los:

> darf man wenn man lsh und rsh programmiert hat,
> diese als Unterfunktionen für c) und d)
> verwenden?

nein... die Befehle dürfen ausschließlich durch die Grundbefehle (siehe Seite 3 auf Übungsblatt) realisiert werden. Es darf also kein Befehl verwendet werden, der ansich schon irgendeinen Shift realsiert.

> darf man wie im Beispielprogramm von neumi
> Konstanten definieren?
> z.B.:
> x: DW 1

Für den Programmcode nicht, zumindest nicht mit dem DW Befehl - Ausnahme ist der beschriebene Bug... da geh ich gleich noch drauf ein. Aber um z.B. die Speicherzelle 32 zu befüllen, um dort das Ausgangswort einzufüllen, dass geschiftet werden soll, darf man eine Konstante mit dem DW-Befehl definieren.

> Trotzdem kurz die Anmerkung: Sofern ich das richtig verstanden habe, bezieht sich der beschriebene Bug nicht nur auf
> "0x80000000" sondern auf alle Zahlen ? "0x80000000", weil sie von Neumi als Befehle und nicht als Daten interpretiert
> werden, da Neumi keinen fest zugewiesenen Datenspeicher besitzt. Diese Zahlen können auch nicht mit den Immediate-
> Befehlen genutzt werden. Richtig?

Der Bug betrifft nicht die Zahl 0x8000...0 ansich, sondern den Befehl STORE 0.
Was ist denn STORE 0? Blick aufs Datenblatt mit den Befehlen: STORE 0 wird kodiert mit: 100000000...0 - die ersten 8 Bits sind die Programmcodierung (10000000), der Rest ist der Parameter i - hier also 0....0. Damit ist der Befehl STORE 0 als Wert im Speicher interpretiert die Zahl 0x80000...0, da bei Neumi Datenspeicher = Befehlspeicher ist der Befehl auch eine Konstante, wenn ich auf die Adresse, wo der Befehl steht, zugreife. (somit als großer Tipp: auf diese Art können natürlich Konstanten ohne DW-Befehl definiert werden)
Die Zahl 0x8000...0 kann deshalb nicht als Immediate-Befehl genutzt werden, weil die Parameter der Immediate-Befehle nur 24 Bit breit sind und diese Zahl 0x8000..0 ist 32 Bit Breit. Man kann aber trotzdem mit diesen Zahlen rechnen, wenn man Memory-Befehle verwendet, da dort mit der gesamten Inhalt einer Speicherzelle - also der vollen 32 Bit Breite - rechnet.

> gibt es irgend einen vernünftigen Grund, warum man keine Sprungmarken einabauen darf??
> Damit wird das Programm doch nur übersichtlicher und bedeutend einfacher für die Tutoren zu lesen und verstehen...

ja, den gibt es... siehe meine Erklärung oben (Selbstzitierung galore...):
"Die Befehle dürfen ausschließlich durch die Grundbefehle (siehe Seite 3 auf Übungsblatt) realisiert werden"
Neumi bietet da "leider" mehr Möglichkeiten, als er dürfte.

> kann es sein, dass am Schluss ein Fehler im Blatt ist?
> Was will man denn mit dern Zahl 10^31 anfangen? ist nicht die Zahl 2^31 gemeint? :-)

Nein, das ist schon richtig, aber natürlich etwas ungewohnt aufgeschrieben. 10^31 ist hier NICHT die Zahl "10 hoch 31", sondern die Zahl "eine Eins und 31 Nullen" (siehe Notation Kapitel 12.2, Folie 5, ganz oben) 10^31 ist in dieser Notation also also auch wieder die Zahl 0x8000...0

Alles geklärt? Oder noch Fragen?
Re: Blatt 13, Aufgabe 5
03.02.2010 16:10:13
Inhalt der Speicherzelle = 32

Man muss dann diese 32 im binär übersetzen oder?
Re: Blatt 13, Aufgabe 5
03.02.2010 16:38:07
In welchen Zusammenhang?

Könntest du konkreter werden was du machen willst?
"32" in Speicher schreiben, Speicherzelle 32 ansprechen, "32" in Speicherzelle 32 schreiben... oder was genau?
Re: Blatt 13, Aufgabe 5
03.02.2010 17:21:53
Sven Reimer schrieb:
-------------------------------------------------------
> In welchen Zusammenhang?
>
> Könntest du konkreter werden was du machen
> willst?
> "32" in Speicher schreiben, Speicherzelle 32
> ansprechen, "32" in Speicherzelle 32 schreiben...
> oder was genau?

ok ich habe die Sache schon erledigt aber habe noch andere fragen dazu.
Der Linksschift ist einfach.

Für die andere Schiften muss man sich überlegen mit welche aritm.operationen kann man ein 1 oder o nach links verschieben?

Kann man diese Aufgabe ohne die Benutzung von Neumi lösen?



1 mal bearbeitet. Zuletzt am 03.02.2010 17:23 von Baldini.
Re: Blatt 13, Aufgabe 5
03.02.2010 17:32:47
Nunja, wenn der LINKSshift einfach war, dann wird es wohl nicht schwer sein, eine Operation zu finden mit dem man eine 1 oder 0 nach LINKS shiften kann (was macht denn der LINKSshift?)

Ja, man kann ( und sollte ) die Aufgabe auch ohne Neumi schaffen. Die Hauptaufgabe besteht darin eine Idee zu haben, wie man die Shifts mit den vorgegebenen Operationen implementiert.
Neumi sollte nur zum debuggen da sein, d.h. man sollte mit Neumi nur überprüfen, ob die Idee richtig umgesetzt wurde. Neumi kann nicht prüfen, ob die Idee ansich richtig ist. Die Idee sollte da sein, bevor man den Neumi überhaupt verwendet.