This project is my answer to the supporting experiments of the third edition of "In-depth Understanding of Computer Systems" and the notes I wrote. The experimental files are in the directory labs and come from Lab Assignments.
Contains all lab files, as well as the reference documents provided by CMU, and also includes the solution files I wrote. My experimental environment is Ubuntu 16.04 amd-64, where the source saves the original files of all labs;
These are the notes I wrote:
It involves bit operations, two's complement and floating point numbers, etc., which are all C
language programming questions.
Dismantling binary bombs can greatly improve your ability to read assembly code.
This lab mainly involves stack randomization, stack protection methods such as unexecutability, stack overflow, ROP attacks, etc.
Architecture Lab involves the Y86-64
instruction set, the implementation of SEQ and PIPE, and program optimization. You can become familiar with assembly and hardware language HCL
.
This lab has been replaced by Cache Lab at CMU. Considering that Cache Lab is more difficult, you can practice this lab first. Based on Chapters 5 and 6 of the book, the program was optimized, mainly using methods such as loop blocking to eliminate cache misses and eliminate branch prediction errors.
Part A requires writing a cache simulator, and Part B requires optimizing the matrix transpose function to reduce the number of cache misses. This lab can deepen your understanding of caching. Part A has been written.