Dieses Projekt ist meine Antwort auf die unterstützenden Experimente der dritten Ausgabe von „In-Depth Understanding of Computer Systems“ und die Notizen, die ich geschrieben habe. Die experimentellen Dateien befinden sich im Verzeichnis labs und stammen aus Lab Assignments.
Enthält alle Labordateien sowie die von CMU bereitgestellten Referenzdokumente und enthält auch die von mir geschriebenen Lösungsdateien. Meine experimentelle Umgebung ist Ubuntu 16.04 amd-64, in der die Quelle die Originaldateien aller Labore speichert.
Dies sind die Notizen, die ich geschrieben habe:
Dabei handelt es sich um Bitoperationen, Zweierkomplemente und Gleitkommazahlen usw., bei denen es sich alles um Programmierfragen in C
Sprache handelt.
Das Zerlegen binärer Bomben kann Ihre Fähigkeit, Assembler-Code zu lesen, erheblich verbessern.
In diesem Labor geht es hauptsächlich um Stack-Randomisierung, Stack-Schutzmethoden wie Nichtausführbarkeit, Stack-Überlauf, ROP-Angriffe usw.
Das Architekturlabor umfasst den Befehlssatz Y86-64
, die Implementierung von SEQ und PIPE sowie die Programmoptimierung. Sie können sich mit der Assembler- und Hardwaresprache HCL
vertraut machen.
Dieses Labor wurde an der CMU durch das Cache-Labor ersetzt. Da das Cache-Labor schwieriger ist, können Sie dieses Labor zuerst üben. Basierend auf den Kapiteln 5 und 6 des Buches wurde das Programm optimiert, wobei hauptsächlich Methoden wie Schleifenblockierung verwendet wurden, um Cache-Fehler und Fehler bei der Verzweigungsvorhersage zu beseitigen.
Teil A erfordert das Schreiben eines Cache-Simulators und Teil B erfordert die Optimierung der Matrixtransponierungsfunktion, um die Anzahl der Cache-Fehler zu reduzieren. Dieses Labor kann Ihr Verständnis von Caching vertiefen. Teil A ist geschrieben.