通过介绍计算机系统的核心概念,使学生了解这些概念如何实实在在地影响应用程序的正确性和性能。了解数字在计算机系统中的表示方法以及算术运算的特点,从而避免算术溢出这一个造成程序错误和安全漏洞的常见根源。了解程序中不同控制结构(比如条件、循环和开关语句)生成的基本指令模式,过程的实现、不同数据结构的分配和访问方式,从而理解常见的代码安全漏洞(比如缓冲区溢出),以及理解程序员、编译器和操作系统可以采取的减轻这些威胁的措施。了解如何从程序员的角度提高代码的执行性能。了解链接的基本过程。
1)深入理解计算机系统(csapp),第3版,2016
作者:Randal E. Bryant and David R. O’Hallaron 教材官网:http://csapp.cs.cmu.edu 在这里可以找到完整的教材配套ppt,和一些有用的实验题目。
2)C程序设计语言, 第2版, 1988
作者: Brian Kernighan and Dennis Ritchie 作者是C语言的发明者。csapp从程序员的角度理解计算机系统,而C语言是最接近机器底层的编程语言,汇编语言是最接近程序员的机器语言。因此,C语言和汇编语言是该门课程的必修语言。
3) 课件<a href=“https://gitee.com/li-qingan/cs-docs/tree/master/csapp/”>slides</a>
第n次课 | 章节 | 内容 |
---|---|---|
1 | 第1章 计算机系统漫游 | 课程简介、计算机系统概述 |
2-3 | 第2章 信息的表示与处理 | 位、字节、整数的表示与操作 |
4 | 第2章 信息的表示与处理 | 浮点数的表示与操作 |
5 | 第3章 机器级表示 | 机器编程——入门:算术逻辑指令、寄存器、操作数寻址、访存指令 |
6-7 | 第3章 机器级表示 | 机器编程——控制:状态寄存器与条件码、条件分支、循环、switch |
8 | 第3章 机器级表示 | 机器编程——过程调用:过程调用的控制转移、数据转移、内存管理 |
9 | 第3章 机器级表示 | 机器编程——数据:数组、结构类型的表示与操作,浮点数指令 |
10 | 第3章 机器级表示 | 机器编程——高级主题:内存布局、缓冲区溢出的攻击与防范 |
11 | 第5章 程序性能的优化 | 优化概述、编译优化的限制、人工优化的机会 |
12 | 第5章 程序性能的优化 | 优化概述、编译优化的限制、人工优化的机会 |