mirror of
https://github.com/LukasKalbertodt/programmieren-in-rust.git
synced 2024-11-18 10:58:57 +01:00
1.2 KiB
Executable File
1.2 KiB
Executable File
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.
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.
Analysiert dieses Assembly, um herauszufinden, was die Funktion tut. Als kleiner Hinweis: Die Funktion hat folgende Signatur:
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.
- 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.
- Ihr könnt euch am besten auf dem Papier immer aufschreiben, welcher Wert gerade in welchem Register ist. Sonst verwirren die Registernamen schnell.