1 x86体系结构
体系结构 | 厂商 | 微处理器型号 | 字长 | 年代 |
---|---|---|---|---|
IA-16 | Intel | 8086, 8088, 80186, 80188, 80286 | 16位 | 1978年起 |
IA-32 | Intel | 80386, 80486, Pentium, Pentium Pro/II/III/4, Core, Atom | 32位 | 1985年起 |
AMD | Am386, Am486, Am5x86, K5, K6, Athlon | |||
Others | Cyrix 5x86, VIA C3/C7, Transmeta Crusoe/Efficeon | |||
x86-64 | AMD | Opteron, Athlon 64, Phenom, Phenom II | 64位 | 2003年起 |
Intel | Pentium 4 Prescott, Core 2, Core i3/i5/i7 | |||
Others | VIA Nano |
1.1 寄存器模型
寄存器类型 | Intel 8086 | Intel 80386 | x86-64 |
---|---|---|---|
通用寄存器 | AX, BX, CX, DX, SP, BP, SI, DI | EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI | RAX, RBX, RCX, RDX, RSP, RBP, RSI, RDI, R8~R15 |
指令指针寄存器 | IP | EIP | RIP |
标志寄存器 | FLAGS | EFLAGS | RFLAGS |
段寄存器 | CS, DS, ES, SS | CS, DS, ES, SS, FS, GS | CS, DS, ES, SS, FS, GS |
1.2 Intel 8086
- 内部的通用寄存器为16位,既能处理16位数据,也能处理8位数据
- 对外有16根数据线和20根地址线,可寻址内存空间为1MByte(
220 ) - 物理地址的形成采用段加偏移的方式
有4个数据寄存器,存放通用数据,此外还有其他功能:
- AX(Accumulator):存放乘除等指令的操作数
- BX(Base):存放存储单元的偏移地址
- CX(Count):存放计数值
- DX(Data):乘法运算产生的部分积,除法运算的部分被除数
其他4个通用寄存器:
- SP:堆栈指针寄存器,用来指向当前的栈
- BP:基址指针寄存器,指向系统栈最上面一个栈帧的底部
- SI:源变址寄存器,用于存放存储单元在段内的偏移量,串指令中的源操作数指针
- DI:目的变址寄存器,用于存放存储单元在段内的偏移量,串指令中的目的操作数指针
(SI通常指向源数组,DI通常指向目的数组,他们通常被用来成块地移动数据,比如移动数组或结构体,通常和DS和ES一起使用)
标志寄存器:
指令指针寄存器:
- 相当于PC,当CPU取出指令后会自动增加
- 转移指令、过程调用/返回指令等会改变IP的内容
段寄存器,与其他寄存器联合生成存储器地址:
- CS(Code Segment):代码段寄存器
- DS(Data Segment):数据段寄存器
- ES(Extra Segment):附加段寄存器
- SS(Stack Segment):堆栈段寄存器
物理地址=段基值*16+偏移量
1.3 Intel 80386
- 80x86系列中的第一款32位微处理器
- 支持32位的算术和逻辑运算,提供32位的通用寄存器
- 改进了“保护模式“,段范围可达4GB
- 增加了“虚拟8086模式“,可同时模拟多个8086微处理器
2 x86指令简介
2.1 程序示例
2.2 指令分类
2.2.1 传送类指令
2.2.2 运算类指令
2.2.3 转移类指令
2.2.4 控制类指令
2.2.5 串操作指令
- MOVSB指令:在存储器中将指定位置的一个字节单元传送到另一个指定的位置
- REP前缀:当CX
≠ 0时,重复执行串操作指令 - 源串地址为DS:SI,目的串地址为ES:DI
- 串的长度在CX寄存器中
- 自动修改SI和DI,指向下一个串元素
- 若使用重复前缀,则CX
← CX-1
3 MIPS体系结构
MIPS的设计者,RISC的先驱:约翰
英文全称:Microprocessor without Interlocked Piped Stages
主要关注点:减少指令的类型,降低指令的复杂度
基本原则:A simpler CPU is a faster CPU
3.1 MIPS公司
年份 | 事件 |
---|---|
1984 | MIPS计算机系统公司成立 |
1988 | SGI公司在其计算机产品中采用MIPS处理器 |
1989 | MIPS第一次上市 |
1992 | SGI收购MIPS,更名为MIPS技术公司 |
1998 | MIPS再次上市 |
2012 | Imagination Technologies收购MIPS |
应用领域:数字电视,机顶盒,蓝光播放器,游戏机,网络设备等
3.2 MIPS指令的主要特点
- 固定的指令长度(32bit,即1 word)
- 简化了从存储器取指令
- 简单的寻址模式
- 简化了从存储器取操作数
- 指令数量少,指令功能简单(一条指令只完成一个操作)
- 简化指令的执行过程
- 只有Load和Store指令可以访问存储器
- 例如,不支持x86指令的这种操作:ADD AX, [3000H]
- 需要优秀的编译器支持
指令示例:
- add a, b, c
- lw $8, 12($19)
- add, $8, $18, $8
- sw $8, 40($19)
3.3 MIPS的通用寄存器
3.4 MIPS指令的基本格式
- opcode:用于指定指令的类型,对于所有R型指令,该域的值均为0
- rs:通常用于指定第一个源操作数所在的寄存器编号
- rt:通常用于指定第二个源操作数所在的寄存器编号
- rd:通常用于指定目的操作数(保存运算结果)的寄存器编号
- shamt:用于指定移位指令进行移位操作的位数,对于非移位指令,该域设为0
- 与opcode域组合,精确地指定指令的类型