Praktikum ASP Blatt 2 1 LEHRSTUHL FÜR RECHNERARCHITEKTUR UND PARALLELE SYSTEME Aspekte der systemnahen Programmierung bei der Spieleentwicklung Arbeitsblatt 2 29.10.2018-04.11.2018 T1 Grundlagen der AArch64-Architektur Wiederholen Sie gemeinsam mit Ihrem Tutor die folgenden Grundlagen der 64-Bit ARM Architektur (AArch64). Diskutieren Sie insbesondere die Struktur der 31 General- Purpose-Register sowie die besonderen Aufgaben der Register sp, xzr und nzcv. Sprechen Sie ebenfalls über die Bedeutung und Verwendung der folgenden Instruktionen und ziehen Sie auch die offizielle ARM-Dokumentation heran: mov movk add sub cmp mul sdiv ldr str ldrb ldrsh strh b bl ret Was hat es mit den Condition Codes ne, eq, gt und le auf sich und wie lassen sich diese für Sprünge verwenden? T2 Kurzprogramme in AArch64-Assembler Programmieren Sie die folgenden kleinen Funktionen in AArch64-Assembler auf einem Blatt Papier oder in einem digitalen Notizbuch. Ziehen Sie auch die offizielle ARM- Dokumentation heran. 1. Der Wert von Register w13 soll um 10 erhöht werden und das Ergebnis in w5 geschrieben werden. 2. Der Wert des Registers w1 soll verdoppelt werden. 3. w4 soll den konstanten Wert 0x56 erhalten. 4. x0 soll den konstanten Wert 0xdeadbeef47111174 erhalten. 5. In Register w0 soll das Ergebnis eines XOR zwischen Register w1 und w2 geschrieben werden. 6. w0 = (x2 > x3? 1 : 0)
Praktikum ASP Blatt 2 2 T3 Analyse von Assembler-Kurzprogrammen Erläutern sie, was die folgenden Kurzprogramme ausführen. 1. ldr w2, [x1, 8] 2. ldrsb x2, [x1] 3. bl myfunc 4. ret 5. br x30 Worin besteht der Unterschied zu ret? 6. eor x0, x0, x0 7. cmp x0, 0 b.ge.lcont sub x0, xzr, x0.lcont: T4 Der Barrelshifter Im Folgenden werden wir uns mit einem mächtigen Feature der ARM-Plattform auseinandersetzen gemeint ist der Barrelshifter. Betrachten Sie dazu zunächst die folgende Grafik: Operand 1 Operand 2 Barrel Shifter ALU Ergebnis T4.1 Typen von Shifts Diskutieren Sie die Bedeutung der Grafik und skizzieren Sie dann die Funktionsweisen der unterschiedlichen Schiebeoperationen der ARM-Architektur in den folgenden Grafiken. Welche mathematische Bedeutung haben die einzelnen Operationen?
Praktikum ASP Blatt 2 3 LSL (Logical Shift Left) LSR (Logical Shift Right) ASR (Arithmetic Shift Right) 0000 T4.2 Verwendung des Barrel-Shifters Nachdem Sie sich die Bedeutungen der einzelnen Schiebebefehle bewusst gemacht haben, betrachten wir nun die Kombination von arithmetischen und bitverschiebenden Operatoren. Die Syntax lautet: <arith> <W X>d, <W X>n, <W X>m, <shift> <const> Wobei arith eine der arithmetisch-logischen Operationen (z.b. add, sub, and, or, eor) darstellt. Der Parameter shift ist zu ersetzen durch eine der Schiebeoperationen, welche Sie eingangs kennen gelernt haben. Der obige Ausdruck berechnet dann: Zur Verdeutlichung ein Beispiel: 1. Sie wollen x8 mit 17 multiplizieren: d = n <arith> (m <shift> <const>) x8 = x8 * 17 = x8 * (1 + 16) = x8 + x8 * 16 = x8 + x8 * 2 4 Der passende Assemblerbefehl lautet also add x8, x8, x8, lsl 4 Verwenden Sie nun den Barrelshifter um auf ähnliche Weise wie in den Beispielen die folgenden Berechnungen mit möglichst wenig Instruktionen auszuführen. Zerlegen Sie die Rechnung dazu möglichst geschickt. 1. x2 = x2 * 257 2. w21 = w21 / 65536 3. x16 = -3 * x16
Praktikum ASP Blatt 2 4 H1 Weitere Kurzprogramme Überlegen sie sich, welche mathematische Formel die folgenden Kurzprogramme berechnen. H1.1 Programm 1 Welcher Wert steht am Ende der folgenden Funktion in Register x0 für einen Eingabewert x in Register x0? 1 program1 : 2 mov x1, 2 3. Lloop : 4 cmp x0, 1 5 b.le. Lend 6 add x1, x1, x1 7 sub x0, x0, 1 8 b. Lloop 9. Lend : 10 mov x0, x1 11 ret H1.2 Programm 2 Welcher Wert steht am Ende der folgenden Funktion in Register x0 für die Eingabewerte x und y, jeweils in den Registern x0 und x1? 1 program2 : 2 cmp x1, 0 3 cneg x1, x1, lt 4 mul x0, x0, x1 5 ret H1.3 Programm 3 Welcher Wert steht am Ende der folgenden Funktion in Register x0 für den Eingabewert x in dem Registern x0? 1 program3 : 2 mov w1, 0 3. Lloop : 4 tst w0, 1 5 lsr x0, x0, 1 6 cinc w1, w1, ne 7 cbnz x0,. Lloop 8 mov w0, w1 9 ret
Praktikum ASP Blatt 2 5 Es besteht keine Verpflichtung, diese Hausaufgaben abzugeben. Sie dienen lediglich der Übung und werden in der folgenden Tutorstunde besprochen.