Sie sind auf Seite 1von 11

1.

Aufgabenblatt
1. Aufgabe : MIPS-Befehlssatz
a) Untenstehende Tabelle 1.1 zeigt eine kurze MIPS-Befehlsfolge.
Entwickeln Sie mit Hilfe des Beiblatts „MIPS Reference Data“ den MIPS-Maschinencode. Soweit nicht
ausdrücklich angegeben, werden alle numerischen Werte als Dezimalzahlen dargestellt.
Stellen Sie, beginnend bei der Hauptspeicheradresse (1000)16 ,den MIPS-Maschinencode für die ersten zwei
Befehle sowohl in dem nach „little endian“(low byte, low adress) als auch nach „big endian“ organisierten
Hauptspeicher dar.

Adresse MIPS-Assemblerbefehl
(1000)16 add $t2, $t3, $t4
(1004)16 andi $t4, $s7, 18
(1008)16 sll $t7, $t6, 2
(100C)16 addi $t8, $t7, 26416
(1010)16 lw $s0, 264C16($t2)
(1014)16 sw $t9, 48C16($s4)

Tabelle 1.1: Programmausschnitt

Rechnerstrukturen 1 1
Sommersemester 2021 Rüffer
1. Aufgabenblatt
b) Tabelle 1.2 zeigt eine Folge von MIPS-Maschinencodeworten. Geben Sie mit Hilfe des „MIPS Reference
Data“ den MIPS-Assemblerbefehl an, der zu dem in der Tabelle aufgeführten MIPS-Maschinencodewort
gehört.

rd shamt funct
MIPS-Assemblerbefehl op rs rt
constant or address
2316 1010 1610 164016

0 1010 1210 1310 - 2416

2B16 1610 2210 52016

Tabelle 1.2: Programmausschnitt

Rechnerstrukturen 1 2
Sommersemester 2021 Rüffer
1. Aufgabenblatt

c) Im Befehlszähler PC stehe der Wert (2000)16. Unter dieser Adresse ist der Maschinencode des MIPS-
Assemblerbefehls beq $216, $zero, (168)16 gespeichert.
• Geben Sie den Maschinencode dieses MIPS-Assemblerbefehls an.
• Berechnen Sie die Hauptspeicheradresse des Befehls, zu dem mit dem genannten
Assemblerbefehl bei Ausführung des Sprungs verzweigt wird.

d) Zu welcher Byteadresse verzweigt der Assemblerbefehl j (23EB34C)16 ?


Stellen Sie den Maschinenbefehl des Assemblerbefehls dar. Gehen Sie davon aus, dass für den
Programmzähler gilt: PC= (7F8ACBA8)16.

Rechnerstrukturen 1 3
Sommersemester 2021 Rüffer
1. Aufgabenblatt

Register- Bei Aufruf


Name Nutzung
nummer beibehalten?
$zero $0 der konstante Wert 0 -
$at $1 temporärer Assembler nein
Werte für Ergebnisse und für die
$v0-$v1 $2-$3 nein
Auswertung von Ausdrücken
$a0-$a3 $4-$7 Argumente nein
$t0-$t7 $8-$15 temporäre Variablen nein
$s0-$s7 $16-$23 gespeicherte Variablen ja
$t8-$t9 $24-$25 weitere temporäre Variablen nein
$gp $28 globaler Zeiger ja
$sp $29 Kellerzeiger ja
$fp $30 Rahmenzeiger ja
$ra $31 Rücksprungadresse ja

Tabelle 1.3: MIPS-Registerkonventionen

Rechnerstrukturen 1 4
Sommersemester 2021 Rüffer
1. Aufgabenblatt
Lösung 1. Aufgabe a)

Typ Operation

add $10, $11, $12 R R[rd] = R[rs] + R[rt]

31 op 26 25 rs 21 20 rt 16 15 rd 11 10 shamt 6 5 funct 0
0 (B)16 (C)16 (A)16 0 (20)16
000000 01011 01100 01010 00000 100000

andi $12, $23, (18)10 I R[rt] = R[rs] & ZeroExtImm

31 op 26 25 rs 21 20 rt 16 15 immediate 0
(C)16 (17)16 (C)16 (12)16
001100 10111 01100 0000 0000 0001 0010

Rechnerstrukturen 1 5
Sommersemester 2021 Rüffer
1. Aufgabenblatt

Typ Operation

sll $15, $14, 2 R R[rd] = R[rt] <<shamt

31 op 26 25 rs 21 20 rt 16 15 rd 11 10 shamt 6 5 funct 0

0 - (E)16 (F)16 2 (0)


000000 - 01110 01111 00010 000000

addi $24, $15, (264)16 I R[rt] = R[rs] + SignExtImm

31 op 26 25 rs 21 20 rt 16 15 immediate 0
8 (F)16 (18)16 (264)16
001000 01111 11000 0000 0010 0110 0100

Rechnerstrukturen 1 6
Sommersemester 2021 Rüffer
1. Aufgabenblatt

sw $25, (48C)16 ($20) I M[R[rs] + SignExtImm] = R[rt]

31 op 25 rs 20 rt
26 21 16 15 immediate 0
(2B)16 (14)16 (19)16 (48C)16
101011 10100 11001 0000 0100 1000 1100

lw $16, (264A)16 ($10) I R[rt] = M[R[rs] + SignExtImm]

31 op 25 rs 20 rt
26 21 16 15 immediate 0
(23)16 (A)16 (10)16 (264C)16
100011 01010 10000 0010 0110 0100 1100

Rechnerstrukturen 1 7
Sommersemester 2021 Rüffer
1. Aufgabenblatt
Speicherauszug:

Assemblerbefehl Maschinenwort
add $10, $11, $12 0000 0001 0110 1100 0101 0000 0010 0000 (016C5020)16
andi $12, $23, (18)10 0011 0010 1110 1100 0000 0000 0001 0010 (32EC0012)16

Adresse Little Endian Big Endian


(1000)16 (20)16 (01)16
(1001)16 (50)16 (6C)16
(1002)16 (6C)16 (50)16
(1003)16 (01)16 (20)16
(1004)16 (12)16 (32)16
(1005)16 (00)16 (EC)16
(1006)16 (EC)16 (00)16
(1007)16 (32)16 (12)16
(1008)16 …. ….

Rechnerstrukturen 1 8
Sommersemester 2021 Rüffer
1. Aufgabenblatt
Lösung 1. Aufgabe b)

rd shamt funct
MIPS-Befehl op rs rt
constant or address
lw $s0, (1640)16 ($t2) 2316 1010 1610 164016
and $t5, $t2, $t4 0 1010 1210 1310 - 2416
sw $s6, (520)16 ($s0) 2B16 1610 2210 52016

Lösung 1. Aufgabe c)

2000 beq $216, $zero,(168)16 I If(R[rs] == R[rt])


PC = PC + 4 + Branch Addr.

31 op 26 25 rs 21 20 rt 16 15 rd 15 0
(4)16 2 0 (5A)16

hier: PC = (2000)16
Zieladresse = PC + 4 + (5A)16 ∙ 4 = (2000)16 + 4 + (168)16 = (216C)16

Rechnerstrukturen 1 9
Sommersemester 2021 Rüffer
1. Aufgabenblatt
Lösung 1. Aufgabe d)

j (23EB34C)16 PC = (PC+4)[31:28]|| address<<2

31 op 26 25 0
2 (8FACD3)16
000010 00 1000 1111 1010 1100 1101 0011

Nebenrechnung: 2 | 3 | E | B | 3 | 4 | C
0010|0011|1110|1011|0011|0100|1100
8 F A C D 3

|| : Zeichen für Konkatenation ( z.B. TEX-Anweisung: \concat), es wird aber auch das
Zeichen  genutzt, d.h. PC = (PC+4)[31:28]  (address<<2)

Rechnerstrukturen 1 10
Sommersemester 2021 Rüffer
1. Aufgabenblatt

Nach Ausführung des Sprungbefehls wird das Programm mit dem Befehl, der unter der Adresse
(723EB34C)16 gespeichert ist, fortgesetzt.

Rechnerstrukturen 1 11
Sommersemester 2021 Rüffer

Das könnte Ihnen auch gefallen