236 6 MMIX-Prozessor T e) Welche Eigenschaft müssen Byte-, Wyde-, Tetra- und Octa-Adressen beim MMIX haben? Byte : Reine besondere Eigenschaft wyde : durch 2 tutbar eetztesrstto Tetra : dutch 4 teicbar eeaten 2BTts=O OCTA : church 8 tutbar letter 3BEs=O Big- und Little-Endian a) Welche Art von Daten betrifft die Abspeicherung als Big- oder Little-Endian? b) Verwendet der MMIX-Prozessor Big- oder Little-Endian? c) Was bedeutet Big- und Little-Endian? Was ist der Unterschied? d) Wie wird die 16 Bit-Zahl 0x1234 im Speicher an der Adresse 0x2000000000000000 abgelegt im Falle einer Big-Endian- und einer Little-Endian-Maschine? Adresse Big Endian Little Endian 0x2000000000000000 0x2000000000000001
63 Speicher 237 T e) Wie wird im Speicher an der Adresse 0x2000000000000008 die 32 Bit-Zahl 0x12345678 abgelegt im Falle einer Big-Endian- und einer Little-Endian-Maschine? Adresse Big Endian Little Endian 0x2000000000000008 0x2000000000000009 0x200000000000000A 0x200000000000000B 0 12 0 78 0 34 0 56 0 56 0 34 0 78 0 12 f) Wie wird im Speicher an der Adresse 0x2000000000000008 die 64 Bit-Zahl 12345678 abgelegt im Falle einer Big-Endian- und einer Little-Endian-Maschine? Adresse Big Endian Little Endian 0x2000000000000008 0x2000000000000009 0x200000000000000A 0x200000000000000B 0x200000000000000c 0x200000000000000D 0x200000000000000E 0x200000000000000F
- service Routine 238 6 MMIX-Prozessor Speicherorganisation T a) Was wird im Textsegment gespeichert? Interrupt program Vekeoren made Direktoperanden T b) Was ist ein Interrupt? wird eine asynchrone in Interrupt verzweigt Program munterbrechung - T c) Nennen Sie ein Ereignis, bei dem ein Interrupt auftreten kann ( ism Program m wtra an unterbrochener Steele Division church 0 forlgesetzt T d) Was sind Interruptvektoren? Baruth in Arbeitsspucher, Oder warden veruveigungen we in dem Aaressen isr gespeicher T e) Was wird im Datensegment gespeichert? geobaeevariabeen : Heap l von niedrigeren on noheren Adressen ) whale variable : stack ( von hoheren in niearigeren Adressen )
63 Speicher 239 T f) Was wird im Poolsegment gespeichert? vom Betriebs system una Programme gemeinsamgenutzt uibergabe von Datenaustausch 2 B Programme parameter n Gegeben ist die nachfolgend abgebildete ASCII-Tabelle: ASCII-Zeichentabelle, hexadezimale Nummerierung Code 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 2 SP! " # $ % & ' ( ) * +, - / 3 0 1 2 3 4 5 6 7 8 9 : ; < = >? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { } ~ DEL g) Geben Sie den Inhalt des Poolsegments für das Programm ls an, das mit dem Parameter -la aufgerufen wird (Aufruf: ls -la) 0x4000000000000000 0x4000000000000008 0x4000000000000010 0x4000000000000018 0x4000000000000020 0x4000000000000028 0x4000000000000030 0x4000000000000038
240 6 MMIX-Prozessor T h) Geben Sie den Inhalt des Poolsegments für das Programm rm an, das mit dem Parameter -rf und * aufgerufen wird (Aufruf: rm -rf *) 0x4000000000000000 C) 0x4000000000000008 0 4000000000000028 0x4000000000000010 0 4000 000000000030 ) 0x4000000000000018 Ok 4000000000000038 919198 0x4000000000000020 0x4000000000000028 8%0%8%9 0x4000000000000030 OXLD 72660000000000 parameter 0x4000000000000038 0 4000 0000 00000040 :Dnromgrammname 64 BFL i) Wie werden in der Programmiersprache C einem Programm Parameter übergeben? - rf Ox 2A 00000000000000 parameter - * j) Wie kann man in der Programmiersprache C auf die Parameter zugreifen?
242 6 MMIX-Prozessor 64 MMIX-Programme MMIX-Programme bzw Assembler-Programme für den MMIX-Prozessor sind Quelltext- Dateien mit Befehlen für den MMIX-Prozessor; die vom MMIX unterstützen Befehle nennt man auch Befehlssatz-Befehle den Loader; der Loader ist derjenige Teil des Betriebssystems, der auszuführende Programme vom der Festplatte/SSD in den Speicher lädt den Assemblierer; der Assemblierer, oft auch Assembler genannt, ist das Computerprogramm, das MMIX-Quelltext in Binärdateien mit MMIX-Befehlen und Loader-Anweisungen übersetzt Aufbau Nachfolgende Abbildung zeigt, wie MMIX-Programme (Quelltext) aus vier durch Leerzeichen und Tabulatoren voneinander getrennte Spalten aufgebaut sind Marke Befehl Operanden Kommentar LOC Data_Segment GREG @ SP GREG Pool_Segment A OCTA 123456 A initialisieren a IS $1 Name für $1 LOC #100 Beginne an 0x100 Main LDO a,a A in Reg a laden Start SUB SP,SP,8 STO a,:sp,0 In der ersten Spalte stehen Marken Marken sind Namen, über die Speicherstellen (Befehle oder Daten) angesprochen werden können Bis auf die Marke Main (Programm-Beginn) sind Marken optional
it -7,0-9 246 6 MMIX-Prozessor Aufgaben T a) Aus wievielen/welchen Spalten bestehen MMIX-Programme? 4 spatter : Marke, Before, Operand, kommentar T b) Wie werden die Spalten im Programmcode getrennt? dutch Leerzetchen oder Tabueatoren T c) Wie muss man MMIX-Codezeilen schreiben, die keine Marke verwenden? Ste Meissen me Leerzetchenltabueatoren antangen T d) Wie kann man beim MMIX-Assembler eine komplette Zeile auskommentieren? sonaerzeichenbeginnt also ein element { a, A,,, Tnaem man ME einem } T e) Werden alle vier Spalten eines MMIX-Programms für den Übersetzungsvorgang herangezogen? Gehen Sie auf die einzelnen Spalten ein Nein, spate 4 : Uommentar wirdignorier spate 1 : Marke wtrd War for der aaressebenutzt Berechnung new spate 2 and 3 benotigt ' lcupwrertoneiairleonader - Between ' TE Loc,,grr=g) : '
64 MMIX-Programme 247 f) Geben Sie Anweisungen an, mit denen Sie die Register 0, 1 und 2 durch die Namen a, b und c ansprechbar machen T g) Geben Sie Anweisungen an, mit denen Sie die Register 1, 2 und 3 durch die Namen ankathete, gegenkathete und hypothenuse ansprechbar machen ankathete IS $1 gegenkathete Is $2 hypotenuse Is $3 h) Geben Sie die Anweisung an, mit denen Sie ein globales Register anlegen, dieses über den Namen PI ansprechbar machen und mit 0x400921FB54442EEA initialisieren T i) Geben Sie die Anweisung an, mit denen Sie ein globales Register anlegen und dieses über den Namen A ansprechbar machen A greg
248 6 MMIX-Prozessor T j) Mit welchen Befehlen können Sie Worte der Länge 8, 16, 32 und 64 Bit im Speicher reservieren? 8 BFL : BYTE 16 BFL : WYDE 32 BTT : TETRA 64 Bit : OCTA T k) Was ist der Loader? Tut aes Betriebs systems led aus Programme in den Arbeitsspeicher der Eestplatte l) Geben Sie Befehle an, mit denen Sie an Speicheradresse #2000000000000000 vier Bytes reservieren, die über die Marken A, B, C und D angesprochen werden können A soll mit 1 und B mit 2 initialisiert werden Fügen Sie auch einen geeigneten Befehl zur Reservierung und Initialisierung eines globalen Registers mit dem Wert 0x2000000000000000 ein
64 BE OCTA 64 BFL 64 MMIX-Programme 249 T m) Geben Sie Befehle an, mit denen Sie an Speicheradresse #2000000000000000 zwei 64 Bit Werte reservieren, die über die Marken Null, NaN und Inf angesprochen 3 werden können Null soll mit der Gleitkommazahl 00 initialisiert werden, NaN mit der Gleitkomma-Codierung Not a Number und Inf mit der Gleitkomma- Codierung unendlich Fügen Sie auch einen geeigneten Befehl zur Reservierung und Initialisierung eines globalen Registers mit dem Wert 0x2000000000000000 ein LOC # 2000000000000000 Nuee NAN 00000000 0000 FFFO S f e Betrachten Sie die folgenden Befehle: 0 11111111111 0000-0000 LOC #2000000000000000 X BYTE Y WYDE Z OCTA 1 11 GLUEKOMMAZAUL S e f 0 111 1 11 1111 1111 OFFFFF Greg OCTA # Inf OCTA # @ 52 : 1111 FFFOO -10 s - f- one mm mm oro OCTA # FFFFFFFFFFFFFFFF = oooo n) Geben Sie die Adressen an, an denen X und Y im Speicher abgelegt werden o) An welchen Adressen wird Z abgelegt?
-00 250 6 MMIX-Prozessor Betrachten Sie die folgenden Befehle: A B C D LOC #2000000000000000 WYDE TETRA BYTE OCTA T p) Geben Sie die Adressen an, an denen A, B, C und D im Speicher abgelegt werden 0 200 A : 16 BFL 0 200--01 02 03 04 05 06 07 08 Og 0 2000 00-0 2000 B : 32 BFL 01 durch 4 tetebare Adresse 0 2000 OA 0 2000 OB OC OD OE bis C : 8 BTT uiberall 0 2000 004 007 008 OF D: 64 BFL 10 4 durch 8 teilbare 11 0 2000 12, J bis tdresse 010 8 0 2000 017
252 6 MMIX-Prozessor T r) Geben Sie Befehle an, die ein neues globales Register anlegen und dieses mit Speicheradresse 0x2000000000000000 initialisieren, an dieser Speicheradresse ein 64 Bit breites Datenwort anlegen, das mit der Marke Erg angesprochen werden kann, an den darauffolgenden Speicheradressen zwei 3-dimensionale Vektoren wie folgt anlegen: Der erste Vektor soll über V1 ansprechbar sein und mit den 32 Bit-Zahlen [100, 200, 300] initialisert werden; der zweite Vektor soll über V2 ansprechbar sein und mit den 32 Bit-Zahlen [10, 20, 30] initialisiert werden LOC Data greg OCTA @ Segment Erg V1 TETRA 100,200,300 VL TETRA 10, 20,30 V 1 TETRA 100 TETRA 200 TETRA ltvaquivalene 300 ( # 2000-000 V2 TETRA TETRA TETRA 10 20 30