ERA Tut W4

ERA Tut W4

University

9 Qs

quiz-placeholder

Similar activities

JLL - Opportunities - NL

JLL - Opportunities - NL

University

10 Qs

01 HTML/CSS Einführung

01 HTML/CSS Einführung

University

12 Qs

Progamação

Progamação

10th Grade - Professional Development

10 Qs

Semester Test Proofreading

Semester Test Proofreading

KG - University

13 Qs

Permutação Simples/Repetição

Permutação Simples/Repetição

University

7 Qs

Tutorium1

Tutorium1

University

10 Qs

Mobile_2022_TM01

Mobile_2022_TM01

University

12 Qs

Android Fundamentals - Day 1: Java

Android Fundamentals - Day 1: Java

University - Professional Development

10 Qs

ERA Tut W4

ERA Tut W4

Assessment

Quiz

Computers

University

Practice Problem

Hard

Created by

Fichte Hiro

Used 9+ times

FREE Resource

AI

Enhance your content in a minute

Add similar questions
Adjust reading levels
Convert to real-world scenario
Translate activity
More...

9 questions

Show all answers

1.

MULTIPLE SELECT QUESTION

30 sec • 1 pt

Wir springen innerhalb eines Unterprogramms zum Label success, um ein Ergebnis ins Register a0 zu schreiben und anschließend zurückzuspringen. Welche Befehle eignen sich dafür am besten?

jal success

jal zero, success

j success

jalr zero, success

Answer explanation

Da wir innerhalb einer Funktion springen und direkt im Anschluss returnen, wollen wir hier keine Nebeneffekt (z.B. Überschreiben von ra). jal zero, label und j label überschreiben ra nicht und sind korrekte Befehle.

2.

FILL IN THE BLANK QUESTION

1 min • 2 pts

Gegeben sei eine RISC-V Implementierung folgender C-Funktion mit den üblichen Zahlengrößen:

int facit(long a, long long b, byte c, short d)

Wie viele Register werden für die Übergabe der Parameter benötigt?

Answer explanation

long-Werte sind standardmäßig 64-Bit, brauchen also 2 Register. Long-long Werte sind üblicherweise länger, werden also als Pointer in einem Register übergeben. Alle Werte mit Größe <=32 werden in einem einzelnen Register übergeben. Darum ergeben sich hier 5 Register.

3.

MULTIPLE SELECT QUESTION

30 sec • 1 pt

Was ist der Vorteil von Endrekursion?

Der Befehl tail kann benutzt werden

Die Funktion rechnet schneller

Es gibt weniger Speicherzugriffe

Die Funktion terminiert immer

Answer explanation

Dadurch, dass man ra nicht auf dem Stack speichern muss, verringert sich die Speichernutzung.

tail darf zudem benutzt werden.

4.

MULTIPLE CHOICE QUESTION

20 sec • 1 pt

Gegeben sei eine rekursive Funktion func (nicht endrekursiv). Welche Befehlsfolge führt zu einem korrekten Sprung, wobei die Calling Convention eingehalten wird?

addi sp, sp, -4

sw ra, 0(sp)

jal func

addi sp, sp, 16

sw ra, 0(sp)

jal func

addi sp, sp, -16

sw sp, 0(ra)

jal func

addi sp, sp, -16

sw ra, 0(sp)

jal func

Answer explanation

Der Stack-Pointer muss 16-Bit aligned sein. Wir speichern dann die Return-Adresse und springen rekursiv.

5.

MULTIPLE SELECT QUESTION

1 min • 3 pts

Media Image

Gegeben sei folgende Funktion. Welche Aussagen treffen zu?

Die Funktion gibt 81 in a0 zurück

Die Funktion terminiert nicht

Die Funktion ist endrekursiv

Die Funktion hält die Calling Convention ein

Answer explanation

Die Funktion berechnet 3^i. Da nach der Abbruchbedingung noch den Stack hochgewandert wird und man in jedem Schritt mit 3 multipliziert, ist die Funktion nicht tailrekursiv. Wegen "addi sp, sp, -4" hält die Funktion die Calling Convention nicht ein.

6.

MULTIPLE SELECT QUESTION

1 min • 2 pts

Media Image

Gegeben sei folgende Funktion. Welche Aussagen treffen zu?

Die Funktion gibt 2 in a0 zurück

Die Funktion terminiert nicht

Die Funktion ist endrekursiv

Die Funktion gibt 1 in a0 zurück

Answer explanation

lui setzt die unteren 12-Bit des Werts im Register auf 0. Damit ist der Wert in a0 nach jedem Durchgang -1. Damit wird die Abbruchbedingung nie erreicht, womit die Funktion nicht terminiert. Endrekursiv ist die Funktion aber, da nach dem rekursiven Aufruf nichts zusätzlich gemacht wird auf einer Ebene.

7.

MULTIPLE SELECT QUESTION

45 sec • 3 pts

Ein Entwickler veröffentlicht eine Mathe-Library für RISC-V, welche nützliche Funktionen für rechenlästige Anwendungen anbietet. Er hält sich aber nicht an die Calling Convention. Welche Folgen kann dies für die Nutzer haben?

Ihre Programme stürzen ab

Es werden Daten überschrieben

Die Library-Funktionen geben falsche Ergebnisse aus

Es kommt zu Problemen bei Speicherzugriffen (sog. Segmentation Faults)

Answer explanation

Wenn die Return-Adresse überschrieben wird, kann es sein, dass man zu einer Adresse springt, wo keine gültige Instruktion ist, womit das Programm irgendwann abstürzt. Ohne die Calling Convention können die Library-Funktionen auch s-Register überschrieben, womit dort gespeicherte Daten überschrieben werden könnten. Bei Veränderung vom Stack-Pointer durch die Library-Funktion kann es zu Speicherzugriffen auf ungültige Adressen kommen (SegFaults). Die Korrektheit der Ergebnisse der Funktionen haben aber nichts mit der Calling Convention zu tun, sofern die Funktion richtig programmiert wurde.

Access all questions and much more by creating a free account

Create resources

Host any resource

Get auto-graded reports

Google

Continue with Google

Email

Continue with Email

Classlink

Continue with Classlink

Clever

Continue with Clever

or continue with

Microsoft

Microsoft

Apple

Apple

Others

Others

Already have an account?