programmieren-in-rust/aufgaben/sheet10/task1/README.md

21 lines
1.2 KiB
Markdown
Raw Normal View History

2017-01-11 03:00:33 +01:00
Aufgabe 1: Assembly analysieren
===============================
In der Datei `magic.s` befindet sich der Assembly-Output einer geheimen Funktion.
Diese Funktion wurde mit `rustc 1.14` und aktivierten Optimierungen kompiliert.
2017-01-11 03:03:52 +01:00
Der Output wurde von mir nicht mehr verändert, entspricht also genau dem, was ihr auch sehen würdet, wenn ihr eure eigenen Programme analysieren wollt.
2017-01-11 03:00:33 +01:00
2017-01-11 03:03:52 +01:00
Analysiert dieses Assembly, um herauszufinden, was die Funktion tut. Als kleiner Hinweis: Die Funktion hat folgende Signatur:
2017-01-11 03:00:33 +01:00
```rust
fn magic(u64) -> bool
```
Bestückt dazu das Assembly mit ausreichend Kommentaren, in denen ihr beschreibt, was jede Instruktion tut und warum das dann zu dem gewünschten Ergebnis führt.
*Hinweise*:
- Beachtet die Slide "komische Instruktionen".
- Unbekannte Instruktionen kann man meist einfach mit "jae instruction" googlen.
2017-01-11 03:03:52 +01:00
- Die meisten Seiten, die man findet bieten viel zu viele Informationen für Anfänger. Hier einfach mit einem filternden Blick die Beschreibungen für Menschen und die relevanten Informationen durchlesen.
2017-01-11 03:00:33 +01:00
- Ihr könnt euch am besten auf dem Papier immer aufschreiben, welcher Wert gerade in welchem Register ist. Sonst verwirren die Registernamen schnell.