您的位置:首页 > 其它

MASM汇编语言笔记(一)IA32处理器体系结构

2011-09-30 14:03 267 查看
处理器 CPU Central Processor Unit

时钟 clock 系统部件同步

寄存器 register

控制单元 Control Unit 协调指令次序

算术逻辑单元 Arithmetic Logic Unit 算术和逻辑运算

机器指令的执行:取指令,解码和执行

指令指针:IP instruction pointer

指令队列:instruction queue

486处理器的6级流水线

总线接口单元 BIU Bus Interface Unit:访问存储器,输入输出

代码预取单元 Code Prefetech Unit:接受指令插入指令至指令队列

指令解码单元 Instruction Decode Unit:机器指令解码为微代码

执行单元 Execution Unit:执行微代码

分段部件 Segment Unit:逻辑地址-->线性地址,保护检查

分页部件 Paging Unit:线性地址-->物理地址

流水线

超标量 Superscalar

缓存 cache memory

调度程序 scheduler

循环调度 round-robin scheduling

IA-32处理器的三种模式:保护模式,实地址模式,系统管理模式

保护模式 Protected Mode 基本模式

虚拟8086模式 Virtual-8086 Mode 保护模式中执行实地址模式的程序

实地址模式 Real-adress Mode 直接访问内存和硬件

系统管理模式 SMM System Management Mode 电源管理,系统安全

地址空间

保护模式下IA32处理器可访问4G 32位无符号整数地址,实模式1M,虚拟8086模式独立的1M

基本寄存器P79

8个通用寄存器,6个段寄存器,一个处理器状态标志寄存器,一个指令指针寄存器

通用寄存器:算术运算和数据传送(32位或16位)

EAX,AX,AH,AL

EBX,BX,BH,BL

ECX,CX,CH,CL

EDX,DX,DH,DL

ESI,SI

EDI,DI

EBP,BP

ESP,SP

EAX 自动用于乘法和除法,扩展累加寄存器

ECX 循环计数器

段寄存器:保护模式下存放段描述符的指针(索引)

ESP 扩展堆栈指针寄存器

ESI,EDI 扩展源指针和扩展目的指针寄存器

EBP 函数参数和局部变量

EIP 指令指针,下一条要执行的指令地址

EFLAGS寄存器:操作或运算结果标志 控制标志和状态标志

CF (bit 0) Carry flag 进位标志

PF (bit 2) Parity flag 奇偶标志

AF (bit 4) Adjust flag (进位或借位,用于BCD算术运算)

ZF (bit 6) Zero flag 零标志

SF (bit 7) Sign flag 符号标志

OF (bit 11) Overflow flag 溢出标志

DF direction flag 方向标志

系统寄存器,允许ring0程序访问

中断描述符表寄存器 IDTR Interrupt Descriptor Table Register 保存中断描述符表

全局描述符表寄存器 GDTR Global Descriptor Table Register 保存全局描述符表

局部描述符表寄存器 LDTR Local Descriptor Table Register 保存正在运行的程序的代码段,数据段和堆栈段的指针

任务寄存器 Task Register 保存当前执行任务的任务状态段(TSS,task state segment)

调试寄存器 Debug Register 调试时设置断点

控制寄存器 Control Register CR0,CR1,CR2,包含控制系统级操作的状态标志和数据域

模型专用寄存器 Mode-Specific Registers 性能监控和结构检查

浮点单元

FPU Float Point Unit

8个浮点数据寄存器ST(0)~ST(7)

其它寄存器

MMX指令集的8个64位寄存器

SIMD单数据多数据操作的8个128位XMM寄存器

Intel 8086 CISC Complex Instruction Set Computing 复杂指令集计算机 微代码

RISC 精简指令集计算机(Reduced Instruction-Set Computer) 直接硬件解码和执行指令

实地址模式

内存寻址1M 00000-FFFFF 808616位寄存器

实模式下,IA-32使用20位地址线,可访问1M内存,1048576字节,0-FFFFF

线性地址linear address或称绝对地址absolute address,20位 0-FFFFF

程序使用段-偏移地址(segment offset)

一个存放在段寄存器(CS,DS,ES,SS)中的16位段值

一个16位的偏移值

linear = segment*16(10H)+offset

典型的程序有三个段:代码段,数据段,堆栈段

CS code segment 16位代码段地址

DS data segment 16位数据段地址

SS stack segment 16位堆栈段地址

ES,FS,GS指向其它数据段

保护模式

可寻址4G内存,范围是0-FFFFFFFF,段寄存器存放段描述符表

平坦分段模式 flat segment model

所有段都映射到32位物理地址空间

段描述符是存放在全剧描述符表(GDT Global Descriptor Table)中的一个64位的值

多段模式 multi-Segment model

每个程序都有自己的描述符表,局部描述符表:LDT Local Descriptor Table,独立的地址空间

分页

所有页的集合称为虚拟内存Virtual Memory

BIOS Basic Input / Output System 基本输入输出系统

PCI Peripheral Component Interconnect 外部组件互联总线

DMA (direct memory access)直接存储器存取

USB 通用串行总线(Universal Serial Bus)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: