intel x86 cpu系列的寻址方式
来源:互联网 发布:星际战甲索玛p数据 编辑:程序博客网 时间:2024/06/11 13:37
当说一个cpu是 16位 或32位时, 指的是中央处理器中的 算术逻辑运算单元(ALU)的宽度。 系统总线中的 数据总线通常与ALU有相同的宽度(有例外)。地址总线宽度最好与
数据总线宽度一致,但不现实。对8086的16位cpu,采用1M字节的内存地址空间,地址总线的宽度就是20位。这就产生一个问题:ALU是16位,也就是说可以直接加以运算的指
针的长度是16位的。那么如何实现20位的地址的运算呢? Intel采用分段的方法。(在汇编指令中,操作数为地址时 如果寻址为1M, 则应为20位的地址,分段以后, 地址仍为16
位,但通过运算得到20位的地址)。这样实现了从16位内部地址到20位实际地址的转换或“映射”。8086cpu中设置了四个段寄存器:CS,DS,SS,ES。段寄存器中的内容对应
于20位地址总线中的高16位, 所以在相加时实际上是拿内部地址中的高12位与段寄存器中的16位相加,而内部地址中的第四位保留不变。8086寻址方式缺少对内存空间的保护,
称为实地址模式,可以任意操作内存。
80286开始实现 “保护模式”,但是只能从实地址模式转入保护模式,却不能从保护模式转回实地址模式。
80386开始,成为32cpu,pentium,pentium 2基本属于同种体系结构,统称为i386结构或i386cpu。386是32位,如果数据总线与地址总线宽度一致, 可以寻址到4G。如
果新设计cpu,其结构应该是很简洁的。但为了保持兼容性,又要支持保护模式。386选择在段寄存器基础上构筑保护模式的构思。保留四个段寄存器,增添2个段寄存器
FS,GS。为了实现保护模式,光用段寄存器确定一个基地址还是不够的,至少还得需要一个地址段的长度,且还需要一些其他信息,如访问权限之类的。所以这里需要的是一
个数据结构,而并非单纯的基地址。Intel设计的基本思路是:在保护模式下改变段寄存器的功能,使其从一个单纯的基地址(变相的基地址)变成指向这样一个数据结构的指
针。
- intel x86 cpu系列的寻址方式
- Intel X86系列CPU寻址方式
- Intel X86系列的寻址方式总结
- Intel X86系列的寻址方式总结
- Intel X86 CPU 系列的寻址方式与段式内存管理机制
- Intel X86 CPU 系列的寻址方式与段式内存管理机制
- Intel 80x86 寻址方式
- Intel X86 CPU系列的寄存器
- Intel X86 CPU系列的寄存器
- Intel X86 CPU系列的寄存器
- Intel X86 CPU系列的寄存器
- Intel X86 CPU系列的寄存器
- Intel x86CPU系列的寻址方式
- x86 系列 CPU 内存寻址模式总结
- 关于x86的寻址方式
- 80x86的寻址方式
- 80x86的寻址方式
- 8086CPU的寻址方式
- Nginx实践:用proxy_store实现高效的静态文件分布缓存服务器
- c#中如何跨线程调用windows窗体控件?
- [Linux调试]Linux的Signal及Singal处理(SIGQUIT SIGKILL SIGBUS等)
- 冒泡排序来也
- GIt_Ubuntu下git配置
- intel x86 cpu系列的寻址方式
- 真正能在windows下编译的linux 0.11,不是在Cygwin,也不是在虚拟机里!
- C# 一个页面,多个Updatepannel,多个Timer
- C#多线程(一) 多线程的相关概念
- 关于jdk和tomcat安装
- 什么是一般异常,什么是运行时异常
- C#多线程(二) 如何操纵一个线程
- Linux下的platform总线驱动(一)
- C#多线程(三) 生产者和消费者