graph TD
A[高级语言编写程序] -->|编译| B[机器语言的EXE文件]
B --> C[程序运行时,内存中生成EXE副本]
C --> D[CPU解释并执行]
CPU构成
移位运算
补码 = 反码 + 1 用来表示负数
补码 + 源码 = 0
构造 \(\pm m \times n^e\)
符号 正数或者负数
尾数 m 尾数部分采用将小数点前部分固定位1的方式
基数 n 指数部分采用Excess系统,表示负数时不使用符号位
指数 e
具体情况
如何保证小数无误差
磁盘缓存
虚拟内存
动态链接和静态链接
动态链接 程序运行时动态加载Library,多个应用共有一个DLL文件,从而节约内存,同时也可以通过只更新DLL,无需更新整个exe文件来更新程序。
物理构造
单位
信息存储单位
压缩算法
案例
分类
可逆 不可逆
操作系统
作用
如何克服硬件和操作系统差异
BIOS 启动操作系统
硬件
编译 源代码 -> 目标文件
链接 目标文件 + 静态链接库 + 导入库 -> 可执行文件
执行 可执行文件 + 动态链接库
EXE 文件中给变量以及函数分配了虚拟的内存地址
操作系统
复制EXE文件
程序运行时分配的空间
用于栈的空间
存储函数内部临时使用的变量,以及函数调用所用的参数的内存区域
用于堆的空间
用来存储程序运行时的任意数据以及对象的内存领域
应用程序经过OS间接的控制硬件
CPU将内存中的指令和数据读出,存储到CPU内部的寄存器中进行处理。
x86主要寄存器
| 寄存器名 | 名称 | 主要工作 |
|---|---|---|
| eax | 累加寄存器 | 运算 |
| ebx | 基址寄存器 | 存储内存地址 |
| ecx | 计数寄存器 | 计算循环次数 |
| edx | 数据寄存器 | 存储数据 |
| esi | 源基址寄存器 | 存储数据发送源的内存地址 |
| edi | 目标基址寄存器 | 存储数据发送目标的内存地址 |
| ebp | 扩展基址指针寄存器 | 存储数据存储领域基点的内存地址 |
| esp | 扩展栈指针寄存器 | 存储栈最高位数据的内存地址 |
常见指令
中断 用来处理实时数据
DMA 数据不经过CPU,直接从外设到主内存
显示