Este proyecto es mi respuesta a los experimentos de apoyo de la tercera edición de "Comprensión profunda de los sistemas informáticos" y las notas que escribí. Los archivos experimentales están en el directorio labs y provienen de Lab Assignments.
Contiene todos los archivos de laboratorio, así como los documentos de referencia proporcionados por CMU, y también incluye los archivos de solución que escribí. Mi entorno experimental es Ubuntu 16.04 amd-64, donde la fuente guarda los archivos originales de todos los laboratorios;
Estas son las notas que escribí:
Implica operaciones de bits, complemento a dos y números de punto flotante, etc., que son todas preguntas de programación en lenguaje C
Desmantelar bombas binarias puede mejorar enormemente su capacidad para leer código ensamblador.
Esta práctica de laboratorio involucra principalmente aleatorización de pila, métodos de protección de pila como inejecutabilidad, desbordamiento de pila, ataques ROP, etc.
El laboratorio de arquitectura incluye el conjunto de instrucciones Y86-64
, la implementación de SEQ y PIPE y la optimización del programa. Puede familiarizarse con el lenguaje ensamblador y de hardware HCL
.
Esta práctica de laboratorio ha sido reemplazada por Cache Lab en CMU. Teniendo en cuenta que Cache Lab es más difícil, puedes practicar esta práctica primero. Según los capítulos 5 y 6 del libro, el programa se optimizó, utilizando principalmente métodos como el bloqueo de bucles para eliminar errores de caché y eliminar errores de predicción de bifurcaciones.
La parte A requiere escribir un simulador de caché y la parte B requiere optimizar la función de transposición de matriz para reducir la cantidad de errores de caché. Esta práctica de laboratorio puede profundizar su comprensión del almacenamiento en caché. La parte A ha sido escrita.