01 overview 绪论 | CSAPP

145 阅读2分钟

Overview

Great Reality

知识概览:

  • Ints are not Integers, Float are not Reals

数据的表示与存储

  • You've Got to Know Assembly

汇编

  • Memory Matters

内存

  • There’s more to performance than asymptotic complexity

渐进复杂度分析

  • Computers do more than execute programs

输入输出、网络

课程内容概要

三个主题

表示(Representation)

  • 不同数据类型(带符号整数、无符号整数、浮点数、数组、结构等)在寄存器或存储器中如何表示和存储?

  • 指令如何表示和编码(译码)?

  • 存储地址(指针)如何表示以及如何生成复杂数据结构中数据元素的地址?

转换(Translation)

  • 高级语言程序对应的机器级代码是怎样的?

  • 执行控制流(Control flow)

  • 计算机能理解的“程序”是如何组织和控制的?

  • 如何在计算机中组织多个程序的并发执行?

  • 逻辑控制流中的异常事件及其处理

  • I/O操作的执行控制流(用户态→内核态)

内容组织

两大部分:

第一部分 系统概述和可执行文件的生成(表示和转换)

  • 计算机系统概述

  • 数据的机器级表示与处理

  • 程序的转换及机器级表示

  • 程序的链接

第二部分 可执行文件的运行(执行控制流)

  • 程序的执行

  • 异常控制流

  • I/O操作的实现

计算机系统层次

Hardware/Software Interface 软硬件接口:

ISA(Instruction Set Architecture)指令集体系结构

冯诺依曼结构:

存储程序的核心思想

8086 CPU

Pasted image 20220926212954.png

IP 存放下一步要执行的指令

关于 8086 CPU 的详细内容还可以看这些文章:

浅谈8086CPU结构 - 知乎

浅谈8086存储器组织 - 知乎

x86汇编之——8086寄存器讲解 - 知乎

CPU的历史疑惑 - 当初8086cpu为什么不直接设计成32根地址总线呢,弄成20根,用段+偏移的寻址方式不觉得尴尬吗? - 知乎

8086汇编基础知识总结 - 知乎

典型的系统硬件构成

Pasted image 20220926212816.png

Pasted image 20220926212901.png

Hello程序被启动后,计算机的动作过程如下:

Shell程序读取字符串“./hello”中各字符到寄存器,然后存放到主存;

“Enter”键输入后,操作系统内核(载入程序)根据主存中的字符串“hello”到磁盘上找到特定的hello目标文件,将其包含的指令代码和数据(“hello, world\n”)从磁盘读到主存,并将控制权转交给hello程序,即将hello程序的第一条指令的地址送到PC中;处理器从hello主程序的指令代码开始执行;Hello程序将“hello, world\n”串中的字节从主存读到寄存器,再从寄存器输出到显示器上。