特此说明: 刘超的趣谈 linux 操作系统是比拟重要的参考资料,本文大部分内容和所有图片来源于这个专栏。
00、计算机的工作模式
关键词 : CPU、总线、内存、其余设施
了解: 计算机仅通过 cpu 执行数据运算,两头后果保留到内存,最终运算后果传递给到其余过程解决
CPU
是这台计算机的大脑总线
组成 CPU 和其余设施的高速通道内存
存储介质,保留 CPU 计算的两头后果其余设施
,显卡 / 显示器、磁盘控制器 / 磁盘、usb 控制器 / 鼠标键盘等
01、CPU 和内存
关键词 : 运算单元、数据单元、管制单元、代码段、数据段、指令指针寄存器、过程切换、总线
了解 : CPU 外部有 3 个单元组成。当程序加载到内存时,cpu 通过总线读取过程的数据段(数据) 和代码段(指令),将运算后的后果写回数据段。
运算单元
只管算,例如做加法、做位移等等。数据单元
包含 CPU 外部的缓存和寄存器组, 空间小速度快,能够临时存放数据和运算后果。管制单元
是一个对立的指挥核心,它能够取得下一条指令,而后执行这条指令。内存分段
这里简略分为代码段和数据段两块,别离寄存指令和数据。指令指针寄存器
是管制单元局部,寄存下一条指令在内存中的地位。过程切换
CPU 里有两个寄存器,专门保留以后解决过程的代码段的起始地址,以及数据段的起始地址(A 过程切换 B 过程后,指令指针寄存器也会指向 B 的代码段)。总线
有地址总线的位数决定寻址范畴,数据总线的位数决定一次读取多少数据。
02、x86 平台
关键词 : 凋谢、对立、兼容
了解: 约定俗成
03、x86 平台处理器(8086 处理器和 32 位处理器)
关键词 : CS、DS、SS、20 位地址总线、32 位地址总线、段描述符、抉择子、实模式、保护模式
了解 : 实模式是为了 16 位处理器(20bits 总线),但这样对于 32 位处理器(32bits 总线) 无奈做到兼容, 开机后会从实模式切换到保护模式。
04、总结
对于 X86 架构在 32bits 处理器会开启段的工作模式,CPU 对内存寻址的过程中,管制单元寄存器中寄存的是段抉择子, 通过它在内存的表格中找到段描述符,最终拿到段起始地址。下图阐明在此模式下 cpu 各单元和内存的工作模式。
05、练习题
# 理解下汇编指令:
mov, call, jmp, int, ret, add, or, xor, shl, shr, push, pop, inc, dec, sub, cmp
# 答案:
move a b : 把 b 值赋给 a, 使 a =b
call 和 ret :call 调用子程序,子程序以 ret 结尾
jmp : 无条件跳
int : 中断指令
add a b : 加法,a=a+b
or : 或运算
xor : 异或运算
shl : 算术左移
ahr : 算术右移
push xxx : 压 xxx 入栈
pop xxx: xxx 出栈
inc: 加 1
dec: 减 1
sub a b : a=a-b
cmp: 减法比拟,批改标记位
参考资料
- 极客工夫 – x86 架构
- x86 Assembly Guide
- Linux 学习笔记《六》