Gedächtnisprotokoll RS08-2: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 48: | Zeile 48: | ||
restore | restore | ||
== Aufgabe 10 == | == Aufgabe 10 (Extraaufgabe)== | ||
(20 Punkte ) | (20 Punkte ) | ||
Version vom 27. März 2008, 15:06 Uhr
Aufgabe 1
Aufgabe 2
Aufgabe 3
Aufgabe 4
Aufgabe 5
Aufgabe 6
Aufgabe 7
Aufgabe 8
Aufgabe 9
( 15 Punkte )
Was macht dieses Programm:
funktion: save %sp, -120, %sp mov %i0, %o0 ! %o0 = x smul %o0, %o0, %o3 smul %o0, %o3, %o2 sll %o2, 2, %o0 sll %o2, 3, %o1 add %o0, %o1, %o2 sll %o3, 1, %o0 sll %o3, 4, %o1 add %o0, %o1, %o3 add %o3, %o2, %o3 add %o3, 60, %o0 sra %o0, 31, %g1 wr %g0, %g1, %y nop nop nop sdiv %o0, 18, %i0 jmp %i7+8 restore
Aufgabe 10 (Extraaufgabe)
(20 Punkte )
Bei folgendem Programm gab es Übertragungsprobleme und zwei Befehle konnten nicht mehr entziffert werden. Rekonstruieren Sie diese.
.global psum .section ".rodata" .null: .word 0, 0 .section ".text" ! double psum( int n, double x[], double y[] ) ! %i0 -> n ! %i1 -> x[] ! %i2 -> y[] psum: save %sp, -120, %sp sethi %hi(.null), %o0 ldd [%o0 + %lo( .null )], %f4 st %f4, [%fp-16] st %f4, [%fp-12] mov %g0, %i5 cmp %g0, %i0 bge .ende nop .schleife: ld [%fp-16], %f8 ld [%fp-12], %f9 mov %i5, %o0 sll %o0, 3, %o1 add %i1, %o1, %g1 ld [%g1], %f4 ! fehlender Befehl ! add %i2, %o1, %g1 ld [%g1], %f6 ld [%g1+4], %f7 fmuld %f4, %f6, %f4 faddd %f8, %f4, %f4 st %f4, [%fp-16] st %f5, [%fp-12] add %i5, 1, %i5 ! fehlender Befehl ! bl .schleife nop .ende: ldd [%fp-16], %f4 std %f4, [%fp-8] fmovs %f4, %f0 fmovs %f5, %f1 jmp %i7+8 restore
Aufgabe 11
Augabe 12
(6 Punkte) Wir betrachten ein RAID-5 System mit 4 Platten. Die platte 2 sei vollständig ausgefallen. Rekonstruieren Sie den Inhalt der Platte 2!
platte 1: 0110 1100 00 01 0111 01
platte 3: 1110 1010 0011 1111 10
platte 4: 0100 1110 0101 00 01 11