bachelorpr fung modul computertechnik · vertrauens rztliches attest - ausgestellt am pr fungstag -...
TRANSCRIPT
Hiermit bestätige ich, dass ich vor Prüfungsbeginn darüber in Kenntnis gesetzt wurde, dass ich im Falle einer plötzlich während der Prüfung auftretenden Erkrankung das Aufsichtspersonal umgehend informieren muss. Dies wird im Prüfungsprotokoll vermerkt. Danach muss unverzüglich ein Rücktritt von der Prüfung beim zuständigen Prüfungsausschuss beantragt werden. Ein vertrauensärztliches Attest - ausgestellt am Prüfungstag - ist unverzüglich nachzureichen. Wird die Prüfung hingegen in Kenntnis der gesundheitlichen Beeinträchtigung dennoch regulär beendet, kann im Nachhinein kein Prüfungsrücktritt aufgrund von Krankheit beantragt werden. Wird die Prüfung wegen Krankheit abgebrochen, wird die Klausur mit der Note "5,0 - nicht erschienen" gemeldet und - unabhängig von einem Rücktrittsantrag - nicht bewertet.
Name:
Hörsaal: Reihe: Platz:
Bachelorprüfung Modul ComputertechnikComputersysteme 1
Hier Etikett einkleben (Prüfungsaufsicht):
Prüfungsfähigkeit:
Weitere Hinweise:
Die Prüfungsdauer beträgt 60 Minuten.Es sind keine Hilfsmittel erlaubt, auch keine Taschenrechner!
Heftung nicht öffnen - keine Blätter abtrennen!
Lösungen bitte immer nur in den dafür vorgesehenen Abschnitt eintragen. An anderen Stellen eingetragene Lösungen werden nicht bewertet. Ggf. zweiten Angabebogen anfordern. Verwenden Sie zum Schreiben bitte einen dunklen Stift - die Prüfungen werden eingescannt!Die Prüfung besteht inkl. Anhang und Konzeptpapier aus 20 Seiten - bitte überprüfen!Die angegebene Anzahl zu erreichender Punkte ist als vorläufig zu betrachten.Die mit einem Stern (*) gekennzeichneten Aufgaben sind unabhängig von der Lösung vorangegangener Aufgaben lösbar. Vorangegangene Angaben können benötigt werden.
----
----
Fakultät: EI EDU BWL INF
Matrikel-Nr.:
Vorname:
Unterschrift:
Bitte ausfüllen:
Aufg. 1Punkte:
Aufg. 2
Aufg. 3
Aufg. 4
Aufg. 5
Aufg. 6
Summe
Probeklausur 2
Übersicht
1 Komponenten Computer-Systeme (5 Punkte) 3
2 Zahldarstellung (4 Punkte) 3
3 MMIX (26 Punkte) 4
3.1 Assembler- und Loaderbefehle (2 Punkte) . . . . . . . . . . . . . . . . 4
3.2 MMIX Befehlsformat (2 Punkte) . . . . . . . . . . . . . . . . . . . . . . 4
3.3 Lade- und Speicherbefehle – Alignment (4 Punkte) . . . . . . . . . . . 5
3.4 Arithmetische Befehle (6 Punkte) . . . . . . . . . . . . . . . . . . . . . 6
3.5 Logische Operationen, Spezialregister (3 Punkte) . . . . . . . . . . . 7
3.6 Verzweigungen (4 Punkte) . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.7 Funktionsaufrufe/Stack (5 Punkte) . . . . . . . . . . . . . . . . . . . . 8
4 Mikroarchitektur (22 Punkte) 9
4.1 MMIX-Datenpfad (8 Punkte) . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 Datenpfad- und Steuerungsentwurf (14 Punkte) . . . . . . . . . . . . . 10
Entwurf eines Moore-Automaten (9 Punkte) . . . . . . . . . . . . . . . . 10
ROM basierte Steuerung (5 Punkte) . . . . . . . . . . . . . . . . . . . . 12
5 Pipelining (6 Punkte) 14
6 Cache (7 Punkte) 15
3
1 Komponenten Computer-Systeme (5 Punkte)
∗a) Was ist eine Festplatten-Spur? (2 Punkte)
∗b) Welche der Busse Adressbus, Datenbus, Steuerbus sind unidirektional, welche
bidirektional? (DMA wird nicht betrachtet.) (3 Punkte)
2 Zahldarstellung (4 Punkte)
∗a) Kodieren Sie 17.25 als 64 Bit breite Gleitkommazahl und tragen Sie das Bitmuster
in die vorgegebene Abbildung ein. (4 Punkte)
63 62 52 51 0
4 3 MMIX
3 MMIX (26 Punkte)
Hinweis: Sie können in allen Aufgaben buf, buf1, ... als Pufferregister verwenden.
3.1 Assembler- und Loaderbefehle (2 Punkte)
∗a) Geben Sie die Anweisungen an, mit denen Sie den Namensraum Daten: anlegen
und in diesem Namensraum die Register 1 und 2 durch die Namen x und y
ansprechbar machen. (2 Punkte)
3.2 MMIX Befehlsformat (2 Punkte)
Betrachten Sie die rechts angegebene Übersetzungs-Tabelle.
Gegeben ist folgender Programmcode:
Start DIV $1,$2,3
SUB $1,$1,3
BZ $1,Ende
SUB i,i,1
JMP Start
∗a) Geben Sie hexadezimal das Befehlswort an, in das der Befehl JMP Start übersetzt
wird. (2 Punkte)
53.3 Lade- und Speicherbefehle – Alignment
! "#$%
!"#"$% &'()*+,-.%(*/%012'(*/%!&'(!)*+*,-(#.*-/!01234/*5!67*8434/*9!:;</!=*8>((!7'3,+4-=*7/*<!?'@*--*!A@*<(*BCBD!!
0x..0 0x..1 0x..2 0x..3 0x..4 0x..5 0x..6 0x..7
TRAP 5! FCMP ! FUN ! FEQL ! FADD 4! FIX 4! FSUB 4! FIXU 4!
FMUL 4! FCMPE 4! FUNE ! FEQLE 4! FDIV 40! FSQRT 40! FREM 4! FINT 4!
SETH ! SETMH ! SETML ! SETL ! INCH ! INCHM ! INCML ! INCL !ORH ! ORMH ! ORML ! ORL ! ANDNH ! ANDNMH ! ANDNML ! ANDNL !
POP 3! RESUME 5! SYNC ! SWYM ! GET ! TRIP 5!0x..8 0x..9 0x..A 0x..B 0x..C 0x..D 0x..E 0x..F
SUB[I] !
CSNP[I] !ZSP[I] !
SUBU[I] !16ADDU[I] !NEGU[I] !SRU[I]!
BOD[B] !+"BEV[B] !+"PBOD[B] 3!-"
CMPU[I] !SLU[I] !BZ[B] !+"BNZ[B] !+"PBZ[B] 3!-"
CSNZ[I] !ZSZ[I] !
ADD[I] !
CSNN[I] !ZSN[I] !
ADDU[I] !4ADDU[I] !
PBNZ[B] 3!-"CSZ[I] !
0x0.. 0x0..FLOT[I] 4! FLOTU[I] 4! SFLOT[I] 4! SFLOTU[I] 4!
PUSHJ[B] ! GETA[B] ! PUT[I] ![UN]SAVE 20µ+!
XOR[I] !NXOR[I] !ODIF[I] !MXOR[I] !
STWU[I] µ+!STOU[I] µ+!STUNC[I] µ+!PUSHGO[I] 3!
LDWU[I] µ+!LDOU[I] µ+!LDUNC[I] µ+!GO[I] 3!
CSOD[I] !PBEV[B] 3!-"
ZSEV[I] !
CSEV[I] !ZSOD[I] !
NAND[I] !TDIF[I] !MOR[I] !
STO[I] µ+!STCO[I] µ+!SYNCID[I] !NOR[I] !
LDO[I] µ+!CSWAP[I] 2µ+2!PREGO[I] !STW[I] µ+!
PBNP[B] 3!-"CSP[I] !
ZSNP[I] !LDW[I] µ+!
BNP[B] !+"PBP[B] 3!-"
8ADDU[I] !NEG[I] !SR[I] !BP[B] !+"
ORN[I] !ANDN[I] !WDIF[I] !SADD[I] !
STBU[I] µ+!STTU[I] µ+!STHT[I] µ+!PREST[I] !
LDBU[I] µ+!LDTU[I] µ+!LDHT[I] µ+!PRELD[I] !
ZSNZ[I] !
BDIF[I] !MUX[I] !
JMP[B] !
STSF[I] µ+!SYNCD[I] !OR[I] !AND[I] !
LDSF[I] µ+!LDVTS[I] !STB[I] µ+!STT[I] µ+!
BNN[B] !+"PBN[B] 3!-"PBNN[B] 3!-"CSN[I] !
ZSNN[I] !LDB[I] µ+!LDT[I] µ+!
2ADDU[I] !CMP[I] !SL[I] !BN[B] !+"
0xC..
0xD..
0xE..
0xF..
0x8..
0x9..
0xA..
0xB..
0xD..
0xE..
0xF..
0x1..
0x2..
0x3..
0x4..
0x5..
0x6..
0x7..
0x9..
0xA..
0xB..
0xC..
0x5..
0x6..
0x7..
0x8..
0x1..
0x2..
0x3..
0x4..
MUL[I] 10! MULU[I] 10! DIV[I] 60! DIVU[I] 60!
!!!&'(!*<(B*!E;@@-*!0F!);B#G*<B9!/*(!1234/*(!*7B(2<;3,B!/*<!&422*-C*;-*!0H!@;(!IJ95! ;7!/*<!(;3,!/*<!)*#+*,-(34/*!@*+;7/*BD!!!&'(!C:*;B*!E;@@-*!/*(!1234/*(!*<=;@B!(;3,!:;*!+4-=BK!!
#! 6L)!0);B!E<D!"9!/*(!C:*;B*7!E;@@-*(!+! H5!:*77!(;3,!/*<!)*+*,-!;8!4@*<*7!?*;-!/*<!&422*-!"#$"!@*+;7/*B!+! I5!:*77!(;3,!/*<!)*+*,-!;8!M7B*<*7!?*;-!/*<!&422*-!"#$"!@*+;7/*B!!
!#! );B(!$5!I!M7/!H!/*(!C:*;B*7!E;@@-*(!*7B(2<*3,*7!/*<!%&'$("!0H!@;(!%95!;7!/*8!(;3,!/*<!)*+*,-(#34/*!@*+;7/*B!
![I]!@*/*MB*BK!N88*/;'B*#O'<;'7B*!/*(!)*+*,-(!
#! ;88*/;'B*!$!&;<*PB42*<'7/!#! ADD $1,$2,$3K!7;3,B!;88*/;'B*5!/'!/*<!"D!12*<'7/!*;7!Q*=;(B*<!;(B!M7/!P*;7*!R',-!#! ADD $1,$2,3K!;88*/;'B*5!/'!'-(!"D!12*<'7/!*;7*!R',-!'7=*=*@*7!;(B!M7/!P*;7!Q*=;(B*<!#! /*<! 1234/*! /*<! ;88*/;'B*#O'<;'7B*! *;7*(! )*+*,-(! ;(B! ;88*<! M8! I! ,S,*<! '-(! /;*! 7;3,B#;88*/;'B*#O'<;'7B*!/*(!)*+*,-(!0(B*,B!;7!/*<!&422*-)&'$("!'-(4!<*3,B(9!
#! *;7*! ;88*/;'B*#O'<;'7B*!/*(!)*+*,-(!:;</!T48!U((*8@-*<!'MB48'B;(3,!'7,'7/!/*(! +*,-*7/*7!&4--'<#R*;3,*7(! 0$9! *<P'77B5! :*(,'-@! ;8! V<4=<'88! 7;3,B! *W2-;C;B!ADDI! =*(3,<;*@*7! :*</*7!8M((!!!
3.3 Lade- und Speicherbefehle – Alignment (4 Punkte)Nehmen Sie folgende Speicherbelegung an:
LOC Data_Segment
GREG @ $254 ← @
TETRA #800328BC
OCTA #A300CD8BD765BAD8
∗a) Geben Sie hexadezimal alle 64 Bit des Registers 0 nach Ausführung der nachfol-
gend angegebenen Befehle an. (2 Punkte)
LDW $0,$254,11:
LDTU $0,$254,15:
6 3 MMIX
In folgendem Programmcode wird XXX XXXXXXXX als Platzhalter für einen einzelnen
Befehl verwendet:
LOC Data_Segment
GREG @ $254 ← Data_Segment
A TETRA #0000 0000
B WYDE #8765
C TETRA #ABCD 0123
LOC #100
Main LDW $0,C
XXX XXXXXXXX
TRAP 0,Halt,0
∗b) Geben Sie für das gezeigte Programm den Inhalt des 32 Bit breiten Wortes an,
welches durch die Marke A adressiert wird, wenn XXX XXXXXXXX jeweils durch
folgenden Befehl ersetzt wird: (2 Punkte)
STBU $0,A:
STTU $0,$254,3:
3.4 Arithmetische Befehle (6 Punkte)Es soll das Volumen einer Kugel mittels V = 4
3 · r3 · π berechnet werden. r und π liegen
bereits als Gleitkommazahlen in Register r und pi.
a) Geben Sie den MMIX-Code an, mit dem Sie das Volumen berechnen und im
Speicher als Gleitkommazahl an der lokalen Marke V ablegen. (6 Punkte)
73.6 Verzweigungen
3.5 Logische Operationen, Spezialregister (3 Punkte)
∗a) Geben Sie den MMIX-Code an, mit dem Sie in Spezialregister rA das Bit Nr. 9 auf
1 setzen. (3 Punkte)
3.6 Verzweigungen (4 Punkte)
∗a) Verwenden Sie MMIX Verzweigungs-Befehle den nachfolgend angegebenen C-
Code zu implementieren. (4 Punkte)
Hinweis: Register x ist bereits angelegt, Sie können es direkt verwenden.
C-code: int x;
...
if(x <= 0){
x = 0;}else{
x = 1;}
MMIX-Code:
8 3 MMIX
3.7 Funktionsaufrufe/Stack (5 Punkte)Nachfolgende Abbildung zeigt, wie einer Funktion Parameter übergeben wurden und
wie die Funktion die verwendeten Register auf den Stack gesichert hat. Die Funktion hat
ein Ergebnis berechnet und soll nun beendet werden.
:SP Gesichertes Register $1
Gesichertes Register $2
Gesichertes Register $3
Parameter 1
Parameter 2
a) Geben Sie den MMIX-Code an, mit dem Sie
• das im Register 1 befindliche Ergebnis auf dem Stack ablegen,
• die Register 1, 2 und 3 wiederherstellen,
• den Stackpointer anpassen und
• zurück zum Funktionsaufrufer springen (Rücksprungadr. in Reg. 0).
(5 Punkte)
94.2 Datenpfad- und Steuerungsentwurf
4 Mikroarchitektur (22 Punkte)
4.1 MMIX-Datenpfad (8 Punkte)
∗a) Erweitern Sie nachfolgende Schaltung so, dass beim Befehl GO $0,$253,0 die
Rücksprungadresse in Register 0 abgelegt werden kann. (4 Punkte)
Befehls- Speicher
Adresse
Befehl32
64
BZ
BR
Schrei- ben
Schreib- Daten $X
Allzw.-Reg.
64 64
X
Y
Z
$X
$Y
$Z
OR
o1
o2
23...16
15...8
7...0
10
23
∗b) Erweitern Sie nachfolgende Schaltung so, dass in der AF-Phase aus o2 und o3 die
Sprungziel-Adresse des BZ-Befehls für den Fall $X = 0 berechnet werden kann.
(4 Punkte)
Befehls- Speicher
Adresse
Befehl 32
64
BZ
BR
Schreiben
Schreib- Daten $X
Allzweck- Registerblock
64
8
8
8
64
64
64
X
Y
Z
$X
$Y
$Z
OR
o1
o2
o3
23...16
15...8
7...032
10
23
10
23
10 4 Mikroarchitektur
4.2 Datenpfad- und Steuerungsentwurf (14 Punkte)
Entwurf eines Moore-Automaten (9 Punkte)
Für nachfolgend angegebenen Datenpfad soll eine Steuerung entwickelt werden.
64
64
64
6464
64
Steuerung
864
Basisadresse x
64
1
64
64
Offset
ADD1
0
Schreiben
Adresse
Daten
clk_mem
reset
D64
64Fertig?
0 1
0 BADD
clk_offset
Sum- me
Zähler
0 1
0
ADD
clk_mw
a / b
r/wr/w
null
1
64
Off- set
fertig
Offset
a
b
Ergebnisadresse
0 1ADD
0
1
Speicher
Die Steuerung soll wie folgt funktionieren:
• In den Zuständen 0 und 1 sollen Register Summe, Zähler und Offset mit 0
initialisiert werden. (1 Punkt)
• In Zustand 1 soll die Speicheradresse Basisadresse x + Offset ausgelesen
werden. Hat das ausgelesene Datum den Wert 0, soll in Zustand 2 verzweigt
werden. Anderenfalls soll in Zustand 4 verzweigt werden. (1,5 Punkte)
• Beim Übergang von Zustand 2 auf 3 soll der in Register Offset gespeicherte
Wert um 8 erhöht werden. (1 Punkt)
• In Zustand 3 soll das im Speicher an Adresse Basisadresse x + Offset abgelegte
Datum zur Generierung des Signals null bereitgestellt werden. (0,5 Punkte)
• Hat in Zustand 3 das Signal null den Wert 0, soll in Zustand 4 verzweigt werden.
Anderenfalls in Zustand 2, falls fertig = 0 bzw. Zustand 6, falls fertig = 1.
(1,5 Punkte)
• Beim Übergang von Zustand 4 in den Zustand 5 soll Register Summe um den
an Speicheradresse Basisadresse x + Offset stehenden Wert erhöht werden.
(1,5 Punkte).
114.2 Datenpfad- und Steuerungsentwurf
• Ist in Zustand 5 fertig = 0, soll in Zustand 2 verzweigt werden. Anderenfalls in
Zustand 6. (1 Punkt)
• Beim Übergang von Zustand 6 in den Zustand 7 soll der im Register Summe
stehende Wert durch den im Register Zähler stehenden Wert dividiert werden
und das Ergebnis im Speicher an der Ergebnisadresse abgelegt werden.
(1 Punkt)
∗a) Vervollständigen Sie den nachfolgendenMoore-Automat so, dass er die Hardware-
Schaltung in gewünschter Weise steuert. Legen Sie Leitungen, deren Pegel ‘‘egal’’
ist auf 0. (9 Punkte)
Initialisierung
0
r/w
clk_offset
clk_mem
reset
clk_mw
Initialisierung
1
r/w
clk_offset
clk_mem
reset
clk_mw
Nächster
2
r/w
clk_offset
clk_mem
reset
clk_mw
Nächster
3
r/w
clk_offset
clk_mem
reset
clk_mw
Mittelwert
4
r/w
clk_offset
clk_mem
reset
clk_mw
Mittelwert
5
r/w
clk_offset
clk_mem
reset
clk_mw
Schreiben
6
r/w
clk_offset
clk_mem
reset
clk_mw
Schreiben/Ende
7
r/w
clk_offset
clk_mem
reset
clk_mw
immer
12 4 Mikroarchitektur
ROM basierte Steuerung (5 Punkte)
Nachfolgende Abbildung zeigt einen anderen Moore-Automaten.
00 10
01 11
immer
null = 1
fertig = 1
0
0
1
1
0
1
0
0
1
0
0
1
0
1
0
1
0
1
0
1
0
1
1
1
1
1
0
1
1
1
0
null = 0
1
xy/res
clk_offset
reset
x/y
clk_mem
clk_x
clk_y
clk_res
xy/res
clk_offset
reset
x/y
clk_mem
clk_x
clk_y
clk_res
xy/res
clk_offset
reset
x/y
clk_mem
clk_x
clk_y
clk_res
xy/res
clk_offset
reset
x/y
clk_mem
clk_x
clk_y
clk_res
fertig
= 0
imm
er
134.2 Datenpfad- und Steuerungsentwurf
Der abgebildete Moore-Automat soll mit folgender ROM-basierten Steuerung imple-
mentiert werden:
D2
D0
Q2
Q0
clk
null
D1
Q1
ROM Speicher012345678
012
9
x/y
xy/resclk_offsetreset
clk_memclk_xclk_yclk_res
fert
ig
3
∗a) Tragen Sie in nachstehendes ROM binär die Daten ein, die an den angegebenen
Adressen abgelegt sein müssen, damit die Steuerung den gezeigten Moore-
Automaten realisiert. (5 Punkte)
Hinweis: Die links angegebene Zustands-Codierung entspricht den Bits 0 und 1
des ROM-Speichers.
0000
1001
0010
Adresse Daten
3 2 1 0 9 8 7 6 5 4 3 2 1 0
0100
1101
14 5 Pipelining
5 Pipelining (6 Punkte)
Gegeben ist der bekannte Pipelining-Datenpfad.
Befehls-Speicher
32 Lesen $Z
Lesen $Y
Schreiben/Lesen $X
Schreib-Daten $X
Lese-Daten $Z
Lese-Daten $Y
Registerblock
0..7
8..15Daten
ALU64
BZ64
Adresse
Add64
4
64
Schreiben
640
1
24..31
32
64BR
64
64
0
1
2
64
64
64
ES
ALU-Funktion
64
Daten-Speicher
Adr.
Lese-Daten $X
64Schreib-Daten
SP
AFDirektoperand
ES
SP ES
2Zugriffs-Art
Zugriffs-Art
Lese-Daten
Ergebnisauswahl
16..23
Reg.-Schreiben
8 8
8
8
Sp.-Schreiben
Schrei-ben
0
1
32
64
Steuerung
8
8Clk1
Clk2Clk3
Clk4
Reg.-Puls
Sp.-Puls
X-A
usw
ahl
16..23 $X
$Y
$Z
DirOp.
X X X
ErgALU
$X
ErgALU
LeseDat.
648
056
∗a) Welche Anforderung muss man an die relativen Ausführungsgeschwindigkeiten
der einzelnen Stufen stellen, damit der Durchsatz maximal wird? (2 Punkte)
Betrachten Sie folgenden Ausschnitt aus einem MMIX-Programm:
DIV $2,$2,$1 Zeile_1
SUB $1,$2,20 Zeile_2
MUL $3,$2,$1 Zeile_3
STO $1,:Erg Zeile_4
∗b) Geben Sie alle auftretenden Datenkonflikte an. (4 Punkte)
15
6 Cache (7 Punkte)
Nachfolgende Abbildung zeigt den bekannten Direktabgebildeten MMIX-Cache.
Byte-AuswahlRahmen-Nr.Schlüssel
0
1
2 - 1f
bfk
k Bits
b Bitsf Bitsk Bits
Rahmen (frame)
v
v
v
v
v
v
v
v
∗a) Geben Sie in richtiger Reihenfolge die zwei Aktionen an, die durchgeführt werden
müssen, bevor mit der Byte-Auswahl ein Byte aus einem Rahmen ausgewählt
werden kann. (2 Punkte)
b) Wie groß ist k, wenn jeder Rahmen 4 kByte groß ist und der Cache insgesamt
2 MB an Daten aufnehmen kann? (3 Punkte)
∗c) Welcher Rahmen wird bei Adresse 0x0123012301230123 ausgewählt, wenn k = 36
und b = 12? Geben Sie den Wert hexadezimal an. (2 Punkte)
16
2.3
MMIX
Befehle
47
Lade-undSpeicherbefehle
Datenvom
Speicherin
ein
Registerladen
Befehl
Operanden
Name/Aktion
Definition
LDB
$X,$
Y,$Z
Loadbyte
$X
s0 64(s
(M1[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadbyteim
mediate
$X
s0 64(s
(M1[u
($Y)
+u(Z
)]))
LDBU
$X,$
Y,$Z
Loadbyteunsigned
$X
u0 64(u
(M1[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadbyteuns.im
med.
$X
u0 64(u
(M1[u
($Y)
+u(Z
)]))
LDW
$X,$
Y,$Z
Loadwyde
$X
s0 64(s
(M2[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadwydeim
mediate
$X
s0 64(s
(M2[u
($Y)
+u(Z
)]))
LDWU
$X,$
Y,$Z
Loadwydeunsigned
$X
u0 64(u
(M2[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadwydeuns.im
med.
$X
u0 64(u
(M2[u
($Y)
+u(Z
)]))
LDT
$X,$
Y,$Z
Loadtetra
$X
s0 64(s
(M4[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadtetraim
mediate
$X
s0 64(s
(M4[u
($Y)
+u(Z
)]))
LDTU
$X,$
Y,$Z
Loadtetraunsigned
$X
u0 64(u
(M4[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadtetrauns.im
med.
$X
u0 64(u
(M4[u
($Y)
+u(Z
)]))
LDO
$X,$
Y,$Z
Loadocta
$X
M8[u
($Y)
+u($Z)
]
$X,$
Y,Z
Loadocta
immediate
$X
M8[u
($Y)
+u(Z
)]
LDOU
$X,$
Y,$Z
Loadocta
unsigned
$X
M8[u
($Y)
+u($Z)
]
$X,$
Y,Z
Loadocta
uns.
immed.
$X
M8[u
($Y)
+u(Z
)]
54
2Assemblerprogrammierung
Adress
enin
einReg
isterladen
Befehl
Operanden
Name/Aktion
Definition
LDA
$X,$
Y,$Z
Getaddress(abso
lute)
$X
u0 64(u
($Y)
+u($Z)
)
$X,$
Y,Z
Getaddressim
med.(absolute)
$X
u0 64(u
($Y)
+u(Z
))
GETA
$X,Y
ZGetaddress(relativ)
$X
u0 64(u
(@)+
4·s
(YZ)
)
a)
WasistderUnterschiedzw
ischendem
BefehlLDA
unddenLadebefehlenLD
B,...?
DieLadebefehleLD
B,...ladenDatenwortevom
SpeicherineinRegister.DerBefehl
LDAlädteineAdresse
inein
Register.
NehmenSie
die
folgendenBefehle
an:
LOC
Data
_Seg
ment
GREG
@$2
54
@
ABY
TE#1
2
LOC
#100
Main
LDA
$0,A
TRAP
0,Ha
lt,0
b)
InwelcheshexadezimaleBefehlswortwirdderBefehlLDA
$0,A
übersetzt?
Warum?
0x23
00FE
00.DerAssemblerlöst
die
MarkeAin
$254
+0aufund
ersetztden
BefehlLD
A$0
,AdurchAD
DUI
$0,$
254,
0.DerBefehlAD
DUIaddiert
denWert
im
Basisregister254unddenOffset0undspeichertdasErgebnisinRegister0.Damit
enthältRegister0danndie
AdressederMarkeA.
c)
Inwelcheshexadezimale
Befehlswort
sollte
derBefehlLD
A$0
,Mai
nübersetzt
werden?
0x23
00FF
00
56
2Assemblerprogrammierung
Datenvom
Registerin
denSpeicherschreiben(speichern)
Befehl
Operanden
Name/Aktion
Definition
STB
$X,$
Y,$Z
Store
byte;withove
rflow
M1[u
($Y)
+u($Z)
]
($X)
7...0
s($X
)�
27)
rA
rA|u
0 64(2
6)
s($X
)<�
27)
rA
rA|u
0 64(2
6)
$X,$
Y,Z
Store
byteim
med.;ovf.
M1[u
($Y)
+u(Z
)]
($X)
7...0
s($X
)�
27)
rA
rA|u
0 64(2
6)
s($X
)<�
27)
rA
rA|u
0 64(2
6)
STBU
$X,$
Y,$Z
Store
byteunsigned
M1[u
($Y)
+u(Z
)]
($X)
7...0
$X,$
Y,Z
Store
byteuns.im
m.
M1[u
($Y)
+u(Z
)]
($X)
7...0
STW
$X,$
Y,$Z
Store
wyd
e;withove
rflow
M2[u
($Y)
+u(Z
)]
($X)
15...0
s($X
)�
215)
rA
rA|u
0 64(2
6)
s($X
)<�
215)
rA
rA|u
0 64(2
6)
$X,$
Y,Z
Store
wyd
eim
med.;ovf.
M2[u
($Y)
+u(Z
)]
($X)
15...0
s($X
)�
215)
rA
rA|u
0 64(2
6)
s($X
)<�
215)
rA
rA|u
0 64(2
6)
STWU
$X,$
Y,$Z
Store
wyd
eunsigned
M2[u
($Y)
+u(Z
)]
($X)
15...0
$X,$
Y,Z
Store
wyd
euns.
imm.
M2[u
($Y)
+u(Z
)]
($X)
15...0
STT
$X,$
Y,$Z
Store
tetra;withove
rflow
M4[u
($Y)
+u(Z
)]
($X)
31...0
s($X
)�
231)
rA
rA|u
0 64(2
6)
s($X
)<�
231)
rA
rA|u
0 64(2
6)
$X,$
Y,Z
Store
tetraim
med.;ovf.
M4[u
($Y)
+u(Z
)]
($X)
31...0
s($X
)�
231)
rA
rA|u
0 64(2
6)
s($X
)<�
231)
rA
rA|u
0 64(2
6)
STTU
$X,$
Y,$Z
Store
byteunsigned
M4[u
($Y)
+u(Z
)]
($X)
31...0
$X,$
Y,Z
Store
byteuns.im
m.
M4[u
($Y)
+u(Z
)]
($X)
31...0
STO
$X,$
Y,$Z
Store
octa
M8[u
($Y)
+u(Z
)]
$X
$X,$
Y,Z
Store
octa
immediate
M8[u
($Y)
+u(Z
)]
$X
STOU
$X,$
Y,$Z
Store
octa
unsigned
M8[u
($Y)
+u(Z
)]
$X
$X,$
Y,Z
Store
octa
uns.
imm.
M8[u
($Y)
+u(Z
)]
$X
La
de
n a
us S
pe
ich
er
Sc
hre
ibe
n in
Sp
eic
he
r
72
2Assemblerprogrammierung
Sch
iebe-Befeh
le
Befehl
Operanden
Name/Aktion
Definition
SL
$X,$
Y,$Z
Shiftleft;withove
rflow
$X
u0 64(u($Y⌧
u($Z)
))
u($Y)
·2u($Z)�
264)
rA
rA|u
0 64(2
5)
$X,$
Y,Z
Shiftleftim
mediate;withovf.
$X
u0 64(u($Y⌧
u(Z
)))
u($Y)
·2u(Z
)�
264)
rA
rA|u
0 64(2
5)
SLU
$X,$
Y,$Z
Shiftleftuns.,noove
rflow
$X
u0 64(u($Y⌧
u($Z)
))
$X,$
Y,Z
Shiftleftuns.
immed.;noovf.
$X
u0 64(u($Y⌧
u(Z
)))
SR$X
,$Y,
$ZShiftright;fillwithsign
$X
$Y�
su($Z)
$X,$
Y,Z
Shiftrightim
m.;fillwithsign
$X
$Y�
su(Z
)
SRU
$X,$
Y,$Z
Shiftrightunsigned;fillwith0
$X
$Y�
uu($Z)
$X,$
Y,Z
Shiftrightuns.
imm.;fillw.0
$X
$Y�
uu(Z
)
Sc
hie
be
n
Ma
rke
n a
ufl
öse
n/A
dre
sse
n la
de
n
17
64
2Assemblerprogrammierung
UmwandlungGleitkommazahl$
Festkommazahl
Befehl
Operanden
Name/Aktion
Definition
FLOT
$X,$
ZConvertfixedto
floating
$X
f0 64(s($Z
))
$X,Z
Conv.fixedto
float.im
m.
$X
f0 64(u(Z
))
FLOT
U$X
,$Z
Conv.uns.
fixedto
floating
$X
f0 64(u($Z)
)
$X,Z
Conv.uns.
fixedto
float.
imm.
$X
f0 64(u(Z
))
FIX
$X,$
ZConvertfloatingto
fixed
withoverflow
$X
s0 64(r(
f 64($Z)
))
f 64($Z)
<�
263)
rA
rA|u
0 64(2
5)
f 64($Z)
>26
3�
1)
rA
rA|u
0 64(2
5)
FIXU
$X,$
ZConvertfloatingto
fixed
withoutove
rflow
$X
s0 64(r(
f 64($Z)
))
a)
WelcheAktionführtderOperatorr(
)aus?
r()rundeteineGleitkommazahlineineFestkommazahl.DasRundenerfolgtwiein
SpezialregisterrA
eingestellt.
b)
Geben
Sie
den
Befehlan,mit
dem
Sie
Register0
die
Gleitkommazahl15,0
zuweisen.
FLOT
$0,1
5
c)
GebenSie
denBefehlan,mitdem
Sie
eineGleitkommazahlin
Register1in
eine
Festkommazahlu
mwandeln.
FIX
$1,$
1
2.3
MMIX
Befehle
65
ArithmetischeBefehle
ArithmetischeBefehle
aufFestkommazahlen
BefehlO
peranden
Name/Aktion
Definition
ADD
$X,$
Y,$Z
Add;signed,withove
rflow
$X
s0 64(s
($Y)
+s($Z
))
(s($Y)
+s($Z
)<�
263)
||(s
($Y)
+s($Z
)�
263))
rA
rA|u
0 64(2
5)
$X,$
Y,Z
Addim
mediate;signed,withove
rflow
$X
s0 64(s
($Y)
+u(Z
))
(s($Y)
+s(Z)
<�
263)
||(s
($Y)
+s(Z)�
263))
rA
rA|u
0 64(2
5)
ADDU
$X,$
Y,$Z
Addunsigned;noove
rflow
$X
u0 64(u
($Y)
+u($Z)
)
$X,$
Y,Z
Addunsigned;noove
rflow
$X
u0 64(u
($Y)
+u(Z
))
SUB
$X,$
Y,$Z
Subtract;signed,withove
rflow
$X
s0 64(s
($Y)�
s($Z
))
(s($Y)�
s($Z
)<�
263)
||(s
($Y)�
s($Z
)�
263))
rA
rA|u
0 64(2
5)
$X,$
Y,Z
Subtractim
mediate;signed,withove
rflow
$X
s0 64(s
($Y)�
u(Z
))
(s($Y)�
s(Z)
<�
263)
||(s
($Y)�
s(Z)�
263))
rA
rA|u
0 64(2
5)
SUBU
$X,$
Y,$Z
Subtractunsigned;noove
rflow
$X
u0 64(u
($Y)�
u($Z)
)
$X,$
Y,Z
Subtractunsignedim
med.;noovf.
$X
u0 64(u
($Y)�
u(Z
))
NEG
$X,Y
,$Z
Negate;signed,withove
rflow
$X
s0 64(u
(Y)�
s($Z
))
u(Y
)�
s($Z�
263))
rA
rA|u
0 64(2
5)
$X,Y
,ZNegate
immediate;signed,withove
rflow
$X
s0 64(u
(Y)�
s(Z)
)
NEGU
$X,Y
,$Z
Negate
unsigned;noove
rflow
$X
s0 64(u
(Y)�
s($Z
))
$X,Y
,ZNegate
unsignedim
med.;noove
rflow
$X
s0 64(u
(Y)�
u(Z
))
MUL
$X,$
Y,$Z
Multiply;signed,withove
rflow
$X
s0 64(s
($Y)
·s($Z)
)
$X,$
Y,Z
Multiplyim
mediate;signed,withovf.
$X
s0 64(s
($Y)
·u(Z
))
MULU
$X,$
Y,$Z
Multiplyunsigned;rH
($Y
·$Z)
127...6
4rH
$X
u0 128(u
($Y)
·u($Z)
)
$X,$
Y,Z
Multiplyuns.
imm.;rH
($Y
·Z) 1
27...6
4rH
$X
u0 128(u
($Y)
·u(Z
))
66
2Assemblerprogrammierung
DIV
Divide;signed,withoverflow
$X
s0 64(b
s($Y
)/s($Z
)c)
$X,$
Y,$Z
(case
$Z6=
0)rR
s0 64(s($Y
)%
s($Z
))
$X,$
Y,Z
Divideim
mediate;signed,withovf.
$X
u0 64(0
)
(case
$Z=
0)rR
$Y
DIVU
$X,$
Y,$Z
Divideunsigned;nooverflow;
$X
u0 128(bu
(rD$
Y)/u($Z)c)
(case
u($Z)
>u(rD)
)rR
u0 128(u(rD$
Y)%
u($Z)
)
Divideunsigned;nooverflow;
$X
rD
noove
rflow
(case
u($Z)
u(rD)
)rR
$Y
$X,$
Y,Z
Divideunsignedim
mediate;
$X
u0 128(bu
(rD$
Y)/u
(Z)c
)
noove
rflow;(case
u(Z
)>
u(rD)
)rR
u0 128(u(rD$
Y)%
u(Z
))
Divideunsignedim
medediate;
$X
rD
noove
rflow
(case
u(Z
)
u(rD)
)rR
$Y
a)
Inwelchem
Wertebereich
können
die
Direktoperanden
beiden
Arithmetischen
Befehlenliegen?
0...2
55so
wohlfürvo
rzeichenlosealsauchfürvorzeichenbehaftete
Operationen.
b)
Kannmitdem
ADDBefehl3
+5in
einereinzigenCodezeile
berechnetwerden?
Nein,daderAD
D-Befehlnureine
nDirektoperandenunterstützt,muss
derzw
eite
Operandzu
vorin
ein
Allzweckregistergeladenwerden.
c)
Wie
kannman
5�
3in
einereinzigenCodezeile
berechnen?
NEG
$0,5
,3
d)
WasistderUnterschiedzw
ischendenBefehlenMU
LundMU
LU?
•MU
L:Quell-
undZieloperandenhabenjeweils
64Bit
•MU
LU:Die
Quelloperandenhabenjeweils
64Bit,derZieloperandhat128
Bit.Die
oberen
64
BitdesErgebnisse
swerden
imSpezialregisterrH
abgelegt.
68
2Asse
mblerprogrammierung
ArithmetischeBefehle
aufGleitkommazahlen
Befehl
Operanden
Name/Aktion
Definition
FADD
$X,$
Y,$Z
Floatingpointadd
$X
f0 64(f 6
4($Y)
+f 6
4($Z)
)
FSUB
$X,$
Y,$Z
Floatingpointsu
btract
$X
f0 64(f 6
4($Y)�
f 64($Z)
)
FMUL
$X,$
Y,$Z
Floatingpointmultiplication
$X
f0 64(f 6
4($Y)
·f64($Z)
)
FDIV
$X,$
Y,$Z
Floatingpointdivide
$X
f0 64(f 6
4($Y)
/f 6
4($Z)
)
FSQR
T$X
,$Z
Square
root
$X
f0 64(p
f 64($Z)
)
a)
GebenSie
MMIX-B
efehle
an,die
⇡=
3.14
15in
Registeraablegen.
SET
a,31
415
FLOT
a,a
SET
buf,
1000
0
FLOT
buf,
buf
FDIV
a,a,
buf
2.3
MMIX
Befehle
79
Zug
riffau
fSpez
ialreg
ister
Befehl
Operanden
Name/Aktion
Definition
GET
$X,Z
Getva
lueofsp
ecialp
urposeregister
$X
r[Z]
PUT
X,$Z
Putva
lueto
specialp
urposeregister
r[X]
$Z
X,Z
Putim
med.va
lueto
spec.purp.reg.
r[X]
u0 64(u
(Z))
a)
TragenSie
innachfolgenderBefehlsse
quenzBefehle
zurBerechnungderFest-
kommadivisionidi
vide
nd/d
ivis
orein
und
speichern
Sie
dasErgebnis
an
der
MarkeQu
otie
ntunddenDivisionsrest
anderMarkeRe
main
derab.
LOC
Data
_Seg
ment
GREG
@
Divi
dend
OCTA
7
Divi
sor
OCTA
3
Quot
ient
OCTA
Rema
inde
rOC
TA
divi
dend
IS$0
divi
sor
IS$1
quot
ient
IS$2
rema
inde
rIS
$3
LOC
#100
Main
LDO
divi
dend
,Div
iden
d
LDO
divi
sor,
Divi
sor
DIV
quot
ient
,div
iden
d,di
viso
r
GET
rema
inde
r,rR
STO
quot
ient
,Quo
tien
t
STO
rema
inde
r,Re
main
der
TRAP
0,Ha
lt,0
66
2Assemblerprogrammierung
DIV
Divide;signed,withove
rflow
$X
s0 64(b
s($Y
)/s($Z
)c)
$X,$
Y,$Z
(case
$Z6=
0)rR
s0 64(s($Y
)%
s($Z
))
$X,$
Y,Z
Divideim
mediate;signed,withovf.
$X
u0 64(0
)
(case
$Z=
0)rR
$Y
DIVU
$X,$
Y,$Z
Divideunsigned;noove
rflow;
$X
u0 128(bu
(rD$
Y)/u($Z)c)
(case
u($Z)
>u(rD)
)rR
u0 128(u(rD$
Y)%
u($Z)
)
Divideunsigned;noove
rflow;
$X
rD
noove
rflow
(case
u($Z)
u(rD)
)rR
$Y
$X,$
Y,Z
Divideunsignedim
mediate;
$X
u0 128(bu
(rD$
Y)/u
(Z)c
)
noove
rflow;(case
u(Z
)>
u(rD)
)rR
u0 128(u(rD$
Y)%
u(Z
))
Divideunsignedim
medediate;
$X
rD
noove
rflow
(case
u(Z
)
u(rD)
)rR
$Y
a)
Inwelchem
Wertebereich
können
die
Direktoperanden
beiden
Arithmetischen
Befehlenliegen?
0...2
55so
wohlfürvo
rzeichenlose
alsauchfürvo
rzeichenbehaftete
Operationen.
b)
Kannmitdem
ADDBefehl3
+5in
einereinzigenCodezeile
berechnetwerden?
Nein,daderAD
D-Befehlnureine
nDirektoperandenunterstützt,muss
derzw
eite
Operandzu
vorin
ein
Allzweckregistergeladenwerden.
c)
Wie
kannman
5�
3in
einereinzigenCodezeile
berechnen?
NEG
$0,5
,3
d)
WasistderUnterschiedzw
ischendenBefehlenMU
LundMU
LU?
•MU
L:Quell-
undZieloperandenhabenjeweils
64Bit
•MU
LU:Die
Quelloperandenhabenjeweils
64Bit,derZieloperandhat128
Bit.Die
oberen
64
BitdesErgebnisse
swerden
imSpezialregisterrH
abgelegt.
Ari
thm
eti
sc
he
Be
feh
le (
Fe
stk
om
ma
)
Ari
thm
eti
sc
he
Be
feh
le (
Gle
itk
om
ma
)
Um
wa
nd
lun
g F
estk
om
ma
<->
Gle
itk
om
ma
Sp
ezia
lre
gis
ter
18
2.3
MMIX
Befehle
61
Direktoperandin
Registerschreiben
Befehl
Operanden
Name/Aktion
Definition
SETL
$X,Y
ZSetto
low
wyde
$X
u0 64(u
(YZ)
)
SETM
L$X
,YZ
Setto
med.low
wyd
e$X
u0 64(u
(YZ⌧
16))
SETM
H$X
,YZ
Setto
med.highwyde
$X
u0 64(u
(YZ⌧
32))
SETH
$X,Y
ZSetto
highwyde
$X
u0 64(u
((YZ⌧
48))
INCL
$X,Y
ZIncrease
bylow
wyde
$X
u0 64(u
($X)
+u(YZ)
)
INCM
L$X
,YZ
Inc.bymed.low
wyde
$X
u0 64(u
($X)
+u(YZ⌧
16))
INCM
H$X
,YZ
Inc.bymed.highwyd
e$X
u0 64(u
($X)
+u(YZ⌧
32))
INCH
$X,Y
ZIncrease
byhighwyd
e$X
u0 64(u
($X)
+u(YZ⌧
48))
a)
GebenSiedieBefehlean,mitdenenSieausschließlichdurchdieVerw
endungvon
Direktoperandendie
Zahl0x0
12345
6789
ABCD
EFin
Register$0
schreiben.
SETH
$0,#
123
INCM
H$0
,#45
67
INCM
L$0
,#89
AB
INCL
$0,#
CDEF
74
2Assemblerprogrammierung
LogischeOperationenaufBit-E
bene
Befehl
Operanden
Name/Aktion
Definition
AND
$X,$
Y,$Z
BitwiseAND
$X
$Y&$Z
$X,$
Y,Z
BitwiseANDim
mediate
$X
$Y&
u0 64(u(Z
))
ANDN
$X,$
Y,$Z
BitwiseANDNOT
$X
$Y&⇠
$Z
$X,$
Y,Z
Bitww
ANDNOTim
med.
$X
$Y&⇠
u0 64(u(Z
))
ANDN
L$X
,YZ
Bitw.ANDNOTlow
wyd
e$X
$X&⇠
u0 64(u(YZ)
)
ANDN
ML$X
,YZ
Bw.ANDNOTmed.l.wd.
$X
$X&⇠
(u0 64(u(YZ)
)⌧
16)
ANDN
MH$X
,YZ
Bw.ANDNOTmed.h.wd.
$X
$X&⇠
(u0 64(u(YZ)
)⌧
32)
ANDN
H$X
,YZ
Bw.ANDNOThighwyd
e$X
$X&⇠
(u0 64(u(YZ)
)⌧
48)
NAND
$X,$
Y,$Z
BitwiseNOTAND
$X ⇠
($Y
&$Z
)
$X,$
Y,Z
BitwiseNOTANDim
med.
$X ⇠
($Y
&u0 64(u(Z
)))
OR$X
,$Y,
$ZBitwiseOR
$X
$Y|$
Z
$X,$
Y,Z
BitwiseORim
mediate
$X
$Y|u
0 64(u(Z
))
ORL
$X,Y
ZBitwiseORlow
wyd
e$X
$X|u
0 64(u(YZ)
)
ORML
$X,Y
ZBitw.ORmed.low
wyd
e$X
$X|(
u0 64(u(YZ)
)⌧
16)
ORMH
$X,Y
ZBitw.ORmed.highwyd
e$X
$X|(
u0 64(u(YZ)
)⌧
32)
ORH
$X,Y
ZBitwiseORhighwyd
e$X
$X|(
u0 64(u(YZ)
)⌧
48)
ORN
$X,$
Y,$Z
BitwiseORNOT
$X
$Y|⇠
$Z
$X,$
Y,Z
BitwiseORNOTim
mediate
$X
$Y|⇠
u0 64(u(Z
))
NOR
$X,$
Y,$Z
BitwiseNOTOR
$X ⇠
($Y
|$Z)
$X,$
Y,Z
BitwiseNOTORim
mediate
$X ⇠
($Y
|u0 64(u(Z
)))
XOR
$X,$
Y,$Z
BitwiseXOR
$X
$Y⌦$Z
$X,$
Y,Z
BitwiseXORim
mediate
$X
$Y⌦
u0 64(u(Z
))
NXOR
$X,$
Y,$Z
BitwiseNOTXOR
$X ⇠
($Y⌦$Z
)
$X,$
Y,Z
Bitw.NOTXORim
mediate
$X ⇠
($Y⌦
u0 64(u(Z
)))
2.3
MMIX
Befehle
81
Verzw
eigun
gsb
efeh
le
Unb
edingte
Verzw
eigun
g
Befehl
Operanden
Name/Aktion
Definition
JMP
XYZ
Jump
@
u0 64(u(@
)+
4·s
(XYZ
))
Bed
ingte
Verzw
eigun
gen
Befehl
Operanden
Name/Aktion
Definition
BZ$X
,YZ
Branchifzero
s($X
)=
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBZ
$X,Y
ZProbable
br.ifzero
s($X
)=
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BNZ
$X,Y
ZBranchifnonzero
s($X
)6=
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBNZ
$X,Y
ZProb.br.ifnonzero
s($X
)6=
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BN$X
,YZ
Branchifnegative
s($X
)<
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBN
$X,Y
ZProb.br.ifnegative
s($X
)<
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BNN
$X,Y
ZBranchifnonneg.
s($X
)�
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBNN
$X,Y
ZProb.br.ifnonneg.
s($X
)�
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BP$X
,YZ
Branchifpositive
s($X
)>
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBP
$X,Y
ZProb.br.ifpositive
s($X
)>
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BNP
$X,Y
ZBranchifnonpositive
s($X
)
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBNP
$X,Y
ZProb.br.ifnonpos.
s($X
)
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BEV
$X,Y
ZBranchifeve
ns($X
)%
2=
0)
@
u0 64(u(@
)+4·s(
YZ))
PBEV
$X,Y
ZProb.branchifeve
ns($X
)%
2=
0)
@
u0 64(u(@
)+4·s(
YZ))
BOD
$X,Y
ZBranchifodd
s($X
)%
2=
1)
@
u0 64(u(@
)+4·s(
YZ))
PBOD
$X,Y
ZProb.branchifodd
s($X
)%
2=
1)
@
u0 64(u(@
)+4·s(
YZ))
84
2Assemblerprogrammierung
Befehle
fürFunktionsaufrufe
Befehl
Operanden
Name/Aktion
Definition
GO
$X,$
Y,$Z
Goto
location
$X
u0 64(u(@
)+
4));
@
u0 64(u($Y)
+u($Z)
)
$X,$
Y,Z
Goto
locationim
mediate
$X
u0 64(u(@
)+
4));
@
u0 64(u($Y)
+u(Z
))
a)
WasistderHaupt-Unterschiedzw
ischendem
JMP-Befehlu
nddem
GO-B
efehl?
•JM
PbenutztRelative
Adressierung,währendGO
Abso
lute
Adressierung
verw
endet.
•GO
speichertdie
Rücksp
rungadresseab,JM
Pnicht.
b)
Wosp
eichern
GO-B
efehle
die
Rücksp
rungadresseab?
Die
Rücksp
rungadressewirdin
RegisterXabgelegt.
c)
Wasistdie
‘‘Rücksp
rungadresse’’?
Die
Rücksp
rungadresseistdie
AdressedesnächstenBefehlsworts.
WennGO
an
einerdurchvierteilb
arenAdresse
asteht,dannistdie
Rücksp
rungadresse
a+
4.
d)
WennGO
Abso
lute
Adressierungve
rwendet:Wie
wirddie
Abolute
Adresse(64Bit)
im32BitbreitenBefehlswortabgelegt?
Genauso
wie
esallgemein
beiM
arkengemachtwird:DerAsse
mblertransform
iert
die
AdressederMarkein
eineBasisa
dresse,die
inRegisterYgesp
eichertwird,
undeinem
Offse
t,derin
RegisterZoderim
DirektoperandenZgesp
eichertwird.
e)
GebenSie
denBefehlan,mitdem
Sie
die
Funktionfk
taufrufenunddie
Rück-
sprungadressein
Register0ablegen.
GO$0
,fkt
66
2Assemblerprogrammierung
DIV
Divide;signed,withove
rflow
$X
s0 64(b
s($Y
)/s($Z
)c)
$X,$
Y,$Z
(case
$Z6=
0)rR
s0 64(s($Y
)%
s($Z
))
$X,$
Y,Z
Divideim
mediate;signed,withovf.
$X
u0 64(0
)
(case
$Z=
0)rR
$Y
DIVU
$X,$
Y,$Z
Divideunsigned;noove
rflow;
$X
u0 128(bu
(rD$
Y)/u($Z)c)
(case
u($Z)
>u(rD)
)rR
u0 128(u(rD$
Y)%
u($Z)
)
Divideunsigned;noove
rflow;
$X
rD
noove
rflow
(case
u($Z)
u(rD)
)rR
$Y
$X,$
Y,Z
Divideunsignedim
mediate;
$X
u0 128(bu
(rD$
Y)/u
(Z)c
)
noove
rflow;(case
u(Z
)>
u(rD)
)rR
u0 128(u(rD$
Y)%
u(Z
))
Divideunsignedim
medediate;
$X
rD
noove
rflow
(case
u(Z
)
u(rD)
)rR
$Y
a)
Inwelchem
Wertebereich
können
die
Direktoperanden
beiden
Arithmetischen
Befehlenliegen?
0...2
55so
wohlfürvo
rzeichenlose
alsauchfürvo
rzeichenbehaftete
Operationen.
b)
Kannmitdem
ADDBefehl3
+5in
einereinzigenCodezeile
berechnetwerden?
Nein,daderAD
D-Befehlnureine
nDirektoperandenunterstützt,muss
derzw
eite
Operandzu
vorin
ein
Allzweckregistergeladenwerden.
c)
Wie
kannman
5�
3in
einereinzigenCodezeile
berechnen?
NEG
$0,5
,3
d)
WasistderUnterschiedzw
ischendenBefehlenMU
LundMU
LU?
•MU
L:Quell-
undZieloperandenhabenjeweils
64Bit
•MU
LU:Die
Quelloperandenhabenjeweils
64Bit,derZieloperandhat128
Bit.Die
oberen
64
BitdesErgebnisse
swerden
imSpezialregisterrH
abgelegt.
Lo
gis
ch
e O
pe
rati
on
en
Ve
rzw
eig
un
ge
n
Fu
nk
tio
nsa
ufr
uf
2.3
MMIX
Befehle
81
Verzw
eigun
gsb
efeh
le
Unb
edingte
Verzw
eigun
g
Befehl
Operanden
Name/Aktion
Definition
JMP
XYZ
Jump
@
u0 64(u(@
)+
4·s
(XYZ
))
Bed
ingte
Verzw
eigun
gen
Befehl
Operanden
Name/Aktion
Definition
BZ$X
,YZ
Branchifzero
s($X
)=
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBZ
$X,Y
ZProbable
br.ifzero
s($X
)=
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BNZ
$X,Y
ZBranchifnonzero
s($X
)6=
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBNZ
$X,Y
ZProb.br.ifnonzero
s($X
)6=
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BN$X
,YZ
Branchifnegative
s($X
)<
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBN
$X,Y
ZProb.br.ifnegative
s($X
)<
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BNN
$X,Y
ZBranchifnonneg.
s($X
)�
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBNN
$X,Y
ZProb.br.ifnonneg.
s($X
)�
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BP$X
,YZ
Branchifpositive
s($X
)>
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBP
$X,Y
ZProb.br.ifpositive
s($X
)>
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BNP
$X,Y
ZBranchifnonpositive
s($X
)
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
PBNP
$X,Y
ZProb.br.ifnonpos.
s($X
)
0)
@
u0 64(u(@
)+
4·s
(YZ)
)
BEV
$X,Y
ZBranchifeve
ns($X
)%
2=
0)
@
u0 64(u(@
)+4·s(
YZ))
PBEV
$X,Y
ZProb.branchifeve
ns($X
)%
2=
0)
@
u0 64(u(@
)+4·s(
YZ))
BOD
$X,Y
ZBranchifodd
s($X
)%
2=
1)
@
u0 64(u(@
)+4·s(
YZ))
PBOD
$X,Y
ZProb.branchifodd
s($X
)%
2=
1)
@
u0 64(u(@
)+4·s(
YZ))
Dir
ek
top
era
nd
en
19
Konzeptpapier
Verwenden Sie dieses Blatt für Notizen. Falls Inhalte dieses Blatts bewertet werden
sollen, müssen Sie das auf diesem Blatt und bei der jeweiligen Teilaufgabe kenntlich
machen.
20 Konzeptpapier
Konzeptpapier
Verwenden Sie dieses Blatt für Notizen. Falls Inhalte dieses Blatts bewertet werden
sollen, müssen Sie das auf diesem Blatt und bei der jeweiligen Teilaufgabe kenntlich
machen.