2.2.3.5 Aufgaben & Co. zum Befehlsformat

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
<p>
Betrachte für die folgenden Aufgaben das Beispiel aus dem Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor] und den dort gegebenen Befehlssatz im Einadressformat:
Betrachte für die folgenden Aufgaben das Beispiel aus dem Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor] und den dort gegebenen Befehlssatz im Einadressformat:
</p>
<p>
<loop_figure title="Einfacher Befehlssatz" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:Einfacher_befehlssatz.JPG]]</loop_figure>
<loop_figure title="Einfacher Befehlssatz" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:Einfacher_befehlssatz.JPG]]</loop_figure>
</p>


<loop_area type="task">'''Aufgabe 1'''<br />
<p>
<loop_area type="task">'''Aufgabe 1'''
<p>
Ein kompletter Befehl (Opcode und Operand) vom Typ NOOP, LOAD, STORE, ADD, SUB, EQUAL, JUMP und HALT besteht derzeit (wie im [http://youtu.be/cX5XLc9e_g4 Video] erläutert) aus insgesamt 16 Bit, wobei die ersten sechs Bit als Reserve nicht genutzt werden.
Ein kompletter Befehl (Opcode und Operand) vom Typ NOOP, LOAD, STORE, ADD, SUB, EQUAL, JUMP und HALT besteht derzeit (wie im [http://youtu.be/cX5XLc9e_g4 Video] erläutert) aus insgesamt 16 Bit, wobei die ersten sechs Bit als Reserve nicht genutzt werden.
</p>


<p>
Entwickle einen Befehlssatz,
Entwickle einen Befehlssatz,
* der maximal 256 Befehle umfassen kann, aber zunächst nur die bereits bekannten Befehle NOOP, LOAD, STORE, ADD, SUB, EQUAL, JUMP und HALT definiert.
* der maximal 256 Befehle umfassen kann, aber zunächst nur die bereits bekannten Befehle NOOP, LOAD, STORE, ADD, SUB, EQUAL, JUMP und HALT definiert.
Zeile 10: Zeile 19:
* der je sechs Bit für die Adressierung von <Ergebnis>, <Operand1> und <Operand2> vorsieht ([[Dreiadressformat]]),
* der je sechs Bit für die Adressierung von <Ergebnis>, <Operand1> und <Operand2> vorsieht ([[Dreiadressformat]]),
* dessen Befehlslänge ein Vielfaches von acht Bit sein soll.
* dessen Befehlslänge ein Vielfaches von acht Bit sein soll.
</p>


<p>
Aus wie vielen Bit besteht damit ein kompletter Befehl (Opcode und Operand) dieses neuen Befehlssatzes mindestens?
Aus wie vielen Bit besteht damit ein kompletter Befehl (Opcode und Operand) dieses neuen Befehlssatzes mindestens?
</p>


<p>
Gebe das [http://courses.cs.vt.edu/csonline/MachineArchitecture/Lessons/CPU/ SUM-Program] aus dem [http://youtu.be/cX5XLc9e_g4 Video] damit an! Herauskommen sollte eine Übersicht wie diese, angepasst an den neuen Befehlssatz:
Gebe das [http://courses.cs.vt.edu/csonline/MachineArchitecture/Lessons/CPU/ SUM-Program] aus dem [http://youtu.be/cX5XLc9e_g4 Video] damit an! Herauskommen sollte eine Übersicht wie diese, angepasst an den neuen Befehlssatz:
<p><loop_figure title="Abbildung zu Aufgabe 1" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:Aufgabe_befehlssatz.jpg]]</loop_figure></p>
</p>
 
<p>
<loop_figure title="Abbildung zu Aufgabe 1" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:Aufgabe_befehlssatz.jpg]]</loop_figure></p>


<p>
Erwartet wird also, dass das SUM-Programm sowohl in Maschinensprache (Einsen und Nullen!), als auch in Assembler angegeben wird. Der Additionsbefehl mit drei Operanden könnte in Assembler so aussehen:
Erwartet wird also, dass das SUM-Programm sowohl in Maschinensprache (Einsen und Nullen!), als auch in Assembler angegeben wird. Der Additionsbefehl mit drei Operanden könnte in Assembler so aussehen:
</p>


<p>
'''ADD''' ACC, ACC, 14
'''ADD''' ACC, ACC, 14
</p>


<p>
"ACC" bezeichnet das Register Akkumulator, die Bedeutung des Befehls ist damit: ''Addiere den im Akkumulutar gespeicherten Wert und den in Speicherzelle 14 gespeicherten Wert, und lege das Ergebnis im Akkumulator ab''.
"ACC" bezeichnet das Register Akkumulator, die Bedeutung des Befehls ist damit: ''Addiere den im Akkumulutar gespeicherten Wert und den in Speicherzelle 14 gespeicherten Wert, und lege das Ergebnis im Akkumulator ab''.
</p>


<p>
Wie löst du das Problem, dass in der binären Codierung (Maschinensprache) unterschieden werden muss, ob ein Operand ein Register, eine Speicherzelle oder gar einen konkreten Wert bezeichnet? (Stichwort: # im [http://youtu.be/cX5XLc9e_g4 Video]. Falls du hier Hilfe benötigst, so diskutiere Lösungsansätze in deiner Lerngruppe!)
Wie löst du das Problem, dass in der binären Codierung (Maschinensprache) unterschieden werden muss, ob ein Operand ein Register, eine Speicherzelle oder gar einen konkreten Wert bezeichnet? (Stichwort: # im [http://youtu.be/cX5XLc9e_g4 Video]. Falls du hier Hilfe benötigst, so diskutiere Lösungsansätze in deiner Lerngruppe!)
</p>
</loop_area>
</loop_area>
<loop_area type="task">'''Aufgabe 2'''<br />
</p>
 
<p>
<loop_area type="task">'''Aufgabe 2'''
<p>
Wie viele Speicherzellen können bei sechs Bit für die Adressierung von <Ergebnis>, <Operand1> und <Operand2> maximal unterschieden werden?
Wie viele Speicherzellen können bei sechs Bit für die Adressierung von <Ergebnis>, <Operand1> und <Operand2> maximal unterschieden werden?
</p>
</loop_area>
</loop_area>
</p>
<br />
<br />
<hr />
<hr />
<sub>Diese Seite steht unter der [http://creativecommons.org/licenses/by/3.0/deed.de Creative Commons Namensnennung 3.0 Unported Lizenz] [http://creativecommons.org/licenses/by/3.0/deed.de http://i.creativecommons.org/l/by/3.0/80x15.png]
<sub>Diese Seite steht unter der [http://creativecommons.org/licenses/by/3.0/deed.de Creative Commons Namensnennung 3.0 Unported Lizenz] [http://creativecommons.org/licenses/by/3.0/deed.de http://i.creativecommons.org/l/by/3.0/80x15.png]
</sub>
</sub>

Version vom 20. September 2013, 22:22 Uhr

Betrachte für die folgenden Aufgaben das Beispiel aus dem Video Vom Quellcode zum Prozessor und den dort gegebenen Befehlssatz im Einadressformat:

Einfacher befehlssatz.JPG

Aufgabe

Aufgabe 1

Ein kompletter Befehl (Opcode und Operand) vom Typ NOOP, LOAD, STORE, ADD, SUB, EQUAL, JUMP und HALT besteht derzeit (wie im Video erläutert) aus insgesamt 16 Bit, wobei die ersten sechs Bit als Reserve nicht genutzt werden.

Entwickle einen Befehlssatz,

  • der maximal 256 Befehle umfassen kann, aber zunächst nur die bereits bekannten Befehle NOOP, LOAD, STORE, ADD, SUB, EQUAL, JUMP und HALT definiert.
  • der maximal 64 Steueroptionen unterscheiden kann (bislang waren es nur zwei Steueroptionen, siehe <Num> im Video),
  • der je sechs Bit für die Adressierung von <Ergebnis>, <Operand1> und <Operand2> vorsieht (Dreiadressformat),
  • dessen Befehlslänge ein Vielfaches von acht Bit sein soll.

Aus wie vielen Bit besteht damit ein kompletter Befehl (Opcode und Operand) dieses neuen Befehlssatzes mindestens?

Gebe das SUM-Program aus dem Video damit an! Herauskommen sollte eine Übersicht wie diese, angepasst an den neuen Befehlssatz:

Aufgabe befehlssatz.jpg

Erwartet wird also, dass das SUM-Programm sowohl in Maschinensprache (Einsen und Nullen!), als auch in Assembler angegeben wird. Der Additionsbefehl mit drei Operanden könnte in Assembler so aussehen:

ADD ACC, ACC, 14

"ACC" bezeichnet das Register Akkumulator, die Bedeutung des Befehls ist damit: Addiere den im Akkumulutar gespeicherten Wert und den in Speicherzelle 14 gespeicherten Wert, und lege das Ergebnis im Akkumulator ab.

Wie löst du das Problem, dass in der binären Codierung (Maschinensprache) unterschieden werden muss, ob ein Operand ein Register, eine Speicherzelle oder gar einen konkreten Wert bezeichnet? (Stichwort: # im Video. Falls du hier Hilfe benötigst, so diskutiere Lösungsansätze in deiner Lerngruppe!)

Aufgabe

Aufgabe 2

Wie viele Speicherzellen können bei sechs Bit für die Adressierung von <Ergebnis>, <Operand1> und <Operand2> maximal unterschieden werden?



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png