Этот проект является моим ответом на вспомогательные эксперименты третьего издания «Углубленного понимания компьютерных систем» и написанные мной заметки. Экспериментальные файлы находятся в каталоге Labs и взяты из лабораторных заданий.
Содержит все файлы лабораторных работ, а также справочные документы, предоставленные CMU, а также файлы решений, которые я написал. Моя экспериментальная среда — Ubuntu 16.04 amd-64, где в исходном коде сохраняются исходные файлы всех лабораторных работ.
Это заметки, которые я написал:
Он включает в себя битовые операции, числа с дополнением до двух, числа с плавающей запятой и т. д., которые все являются вопросами программирования на языке C
Разборка бинарных бомб может значительно улучшить вашу способность читать ассемблерный код.
Эта лабораторная работа в основном включает в себя рандомизацию стека, методы защиты стека, такие как неисполнимость, переполнение стека, атаки ROP и т. д.
Лаборатория архитектуры включает в себя набор инструкций Y86-64
, реализацию SEQ и PIPE, а также оптимизацию программы. Вы можете ознакомиться с ассемблером и аппаратным языком HCL
.
Эта лабораторная работа была заменена Cache Lab в CMU. Учитывая, что Cache Lab более сложна, вы можете сначала попрактиковаться в этой лабораторной работе. На основе глав 5 и 6 книги программа была оптимизирована, в основном с использованием таких методов, как блокировка циклов для устранения промахов кэша и устранения ошибок предсказания ветвлений.
Часть A требует написания симулятора кэша, а часть B требует оптимизации функции транспонирования матрицы для уменьшения количества промахов кэша. Эта лабораторная работа может углубить ваше понимание кэширования. Часть А написана.