Отдельного рассмотрения заслуживает книга, на основе которой был разработан курс:
Брайант Р., О’Халларон Д. Компьютерные системы: архитектура и программирование.
Вышло два издания этой книги, в 2003 и в 2011 годах, первое издание было переведено на русский язык. Электронная версия этого перевода “ходит по Интернетам”. Следует отметить, что второе издание значительно отличается от первого, как за счет добавленного, нового материала, так и из-за изъятия отдельных тем, посчитанных авторами недостаточно важными. Тем не менее, заполучив русский перевод первого издания, можно эффективно его использовать для подготовки к экзамену или пересдаче. В книге, помимо теоретического материла, присутствует множество задач, часть из которых снабжена детально разобранными решениями. Основным неудобством становится то, что лекционный материал нашего курса привязан к ассемблеру nasm, тогда как в книге повсеместно используется ассемблер gas, имеющий отличный от nasm синтаксис AT&T. Другой проблемой является то, что объем книги позволяет на ее основе читать несколько не пересекающихся курсов, и даже если ограничится нужными разделами, все имеющиеся в них задачи потребуют значительное время на решение.
Ниже приведено соответствие некоторых тем лекционного курса с разделами книги, а также список задач из первого, русского, издания, с решения которых стоит начинать. Важно помнить, что 100% покрытия материала курса эти задачи (да и сама книга) не дают!
- Шестнадцатеричная система счисления. Знаковые числа, дополнительный код. Арифметические операции. Порядок байт в памяти.
Глава 2, разделы 2.1-2.3, задачи 2.1 – 2.4, 2.7, 2.20, 2.22-2.23, 2.29-2.30 - Инструкции в IA32/nasm: арифметические, логические, битовые, сдвиги и вращения.
Глава 2, раздел 2.3, задачи 2.13-2.15. Глава 3, раздел 3.5. - Передача управления. Условные и безусловные переходы.
Глава 3, раздел 3.6 - Массивы и указатели.
Глава 3, разделы 3.8 и 3.11, задачи 3.17 и 3.18. - Организация работы со структурами и объединениями языка Си на уровне языка ассемблера. Доступ к полям. Выравнивание данных.
Глава 3, разделы 3.9 и 3.10, задачи 3.21-23. В первом издании архитектура x86_64 не рассматривается! - Организация вызова функций
Глава 3, раздел 3.7. Лекционный материал значительно выходит за рамки того, что рассматривается в книге. Соглашение вызова для x86_64 рассматривается только во втором издании. - Управление динамической памятью
Глава 10, раздел 10.9, задачи 10.6 и 10.7 - Представление чисел с плавающей точкой. Стандарт IEEE 754. Операции над числами с плавающей точкой. Округление чисел.
Глава 2, раздел 2.4, задачи 2.31-2.33 - Сопроцессор FPU x87
Глава 3, раздел 3.14. Во втором издании этот раздел был исключен! - Запоминающие устройства: жесткий диск
Глава 6, раздел 6.1, задача 6.3 - Иерархическая организация памяти: кэш-память
Глава 6, разделы 6.3 и 6.4, задачи 6.7-6.13 - Многозадачная работа компьютера: работа с памятью в защищенном режиме.
Глава 10, разделы 10.1-10.6, задачи 10.1-10.4 - Объектные файлы формата ELF. Статическая компоновка программ.
Глава 7, разделы 7.1-7.1, задачи 7.1 и 7.2
Pingback: Добавлен обзор | Архитектура ЭВМ и язык ассемблера