阅读:998回复:3
给讲一下吧,困扰我很长时间了
在过去的程序设计中,分为代码段,数据段和附加段。 代码段是不是在内存中一个连续的空间,而数据段在内存的另外一个连续空间。那么是不是每条指令在需要访问数据的时候必须改变段寄存器的值,这样是不是很慢??为什么这样设计?
是不是和intel处理器的 机器码怎么访问内存的 访问代码段然后再切换到数据段 在却换到代码段然后再切换到数据段 这样是不是 机器很大的浪费吗〉 给我指点一下好吗?? 困惑我很久了,非常感谢 能给我讲清 所有的分都给你 |
|
沙发#
发布于:2004-05-10 16:47
==引用==
80x86(80386及其以后的各代CPU)可以在三种模式下运转:实模式,保护模式,V86模式。实模式就是古老的MS-DOS的运行环境。Win95只利用了两种模式:保护模式和V86模式。 ==end== 你说的要分段的应该是实模式下的intel cpu寻址方式吧, 现在的cpu都是保护模式下, 读取数据不用进行什么段切换了吧。 以前用实模式是因为地址线只有16位,直接寻址能力只有64k, 用4位分段可以扩展寻址空间到1M. 现在地址线为32位, 寻址能力有4G, 曾经在新浪看到一篇新闻说什么32位CPU局限开始显露,居然说32位的CPU直接寻址能力只有2G, 笑死人了,狗日的新浪. 哈哈,我对CPU不熟悉,对PE格式里的分段也不熟悉,猜测的说:) [编辑 - 5/10/04 by virmin] |
|
|
板凳#
发布于:2004-05-10 16:48
我是问以前的计算机结构
在看汇编语言的时候对这一点很迷惑 |
|
地板#
发布于:2004-05-10 17:42
CPU中有对程序员不可见的段描述符影射寄存器,所有的描述符都存放在影射寄存器中,根本不用访问内存段,而直接由EIP访问代码段,即可,在保护模式下,所有段都是0~4G的FLAT模式,所以更无所谓了,以前所谓的DOS下访问4GB空间,就是利用缓冲积存器的原理,进入保护模式,设置4GB描述符,再返回实模式,而缓冲积存器中的描述符并没有刷新,所以可以访问超过1M的内存,当然8086由于不支持保护模式,所以还是不行的,嘿嘿。。。。。。
|
|
|