Here you can ask questions and find or give answers to organizational, academic and other questions about studying computer science.

870 questions

988 answers

1.4k comments

439 users

+1 vote
Ich habe eine Frage zur Altklausur 2018, Aufgabe 5a). In der Musterlösung in den Zeile 12 ist in der write-Menge nur {y}, und i ist in der read-Menge, nach dem Prinzip auch in der Zeile 13.

Und ich hab mich auch gefragt ob man das was in den Zeilen 11 und 12 steht auch so schreiben kann, in einer Zeile: y[i] = y[j].

Und eine letzte Frage ist, ob man in der Zeile 15 das goto 16 unbedingt braucht, oder ob man das auch weglassen kann. Es ist mir nämlich nicht klar wozu man das braucht.

Vielen Dank im Voraus :)
in * TF "Emb. Sys. and Rob." by (200 points)

1 Answer

0 votes
Eine Array-Zuweisung wie y[j] = x in der fraglichen Zeile 13 wird auf eine Store-Anweisung abgebildet, die mit einer Basisadresse y und einem Offset j adressiert wird und den Wert x dort abspeichert. Insofern wird x und j gelesen und es wird das Array y beschrieben (bei der Write-Menge sieht man y als das Gesamt-Array an statt der Basisadresse).

Man kann im 3-Adresscode nicht y[i] = y[j] schreiben, da man sonst auch y[i] = x[j] schreiben könnte und hier hat man es mit 4 Variablen zu tun. Also muss man hier eine temporäre Variable einführen und tmp =  y[j]; y[i] = tmp; schreiben.

Das goto 16 in Zeile 15 ist redundant, da ohnehin als nächstes zur Zeile 16 gesprungen wird. Die Anweisung kommt daher, dass der MiniC-Compiler die if-Anweisungen mit einer then-Anweisung und einer else-Anweisung ausbaut und  in diesem Fall wurde die else-Anweisung "nothing" ergänzt. Normalerweise muss man am Ende der then-Anweisung über den Code der else-Anweisung springen, die hier aber gar keinen Code hinterlässt. Daher hier die goto-Anweisung nicht nötig, aber auch nicht falsch. Das könnte man im Code-Generator optimieren, wenn man will, aber goto-Anweisungen sind im Gegensatz zu bedingten Sprüngen nicht besonders teuer.
by (139k points)

Related questions

0 votes
1 answer
0 votes
1 answer
+1 vote
1 answer
Imprint | Privacy Policy
...