Este projeto é minha resposta aos experimentos de apoio da terceira edição de "Compreensão aprofundada de sistemas de computador" e às notas que escrevi. Os arquivos experimentais estão no diretório labs e vêm de Lab Assignments.
Contém todos os arquivos do laboratório, bem como os documentos de referência fornecidos pela CMU, e também inclui os arquivos da solução que escrevi. Meu ambiente experimental é o Ubuntu 16.04 amd-64, onde a fonte salva os arquivos originais de todos os laboratórios;
Estas são as notas que escrevi:
Envolve operações de bits, complemento de dois e números de ponto flutuante, etc., que são todas questões de programação em linguagem C
Desmontar bombas binárias pode melhorar muito sua capacidade de ler código assembly.
Este laboratório envolve principalmente randomização de pilha, métodos de proteção de pilha, como inexecutividade, estouro de pilha, ataques ROP, etc.
O laboratório de arquitetura envolve o conjunto de instruções Y86-64
, a implementação de SEQ e PIPE e a otimização do programa. Você pode se familiarizar com a linguagem assembly e de hardware HCL
.
Este laboratório foi substituído pelo Cache Lab na CMU. Considerando que o Cache Lab é mais difícil, você pode praticar este laboratório primeiro. Com base nos capítulos 5 e 6 do livro, o programa foi otimizado, usando principalmente métodos como bloqueio de loop para eliminar falhas de cache e eliminar erros de previsão de ramificação.
A Parte A requer a escrita de um simulador de cache e a Parte B requer a otimização da função de transposição da matriz para reduzir o número de perdas de cache. Este laboratório pode aprofundar sua compreensão sobre cache. A Parte A foi escrita.