pingjingde
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2004-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:998回复:3

给讲一下吧,困扰我很长时间了

楼主#
更多 发布于:2004-05-10 16:17
在过去的程序设计中,分为代码段,数据段和附加段。 代码段是不是在内存中一个连续的空间,而数据段在内存的另外一个连续空间。那么是不是每条指令在需要访问数据的时候必须改变段寄存器的值,这样是不是很慢??为什么这样设计?


   是不是和intel处理器的 机器码怎么访问内存的  访问代码段然后再切换到数据段 在却换到代码段然后再切换到数据段

 这样是不是 机器很大的浪费吗〉

    给我指点一下好吗?? 困惑我很久了,非常感谢

能给我讲清 所有的分都给你
virmin
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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]
sigh~
pingjingde
驱动牛犊
驱动牛犊
  • 注册日期2003-03-05
  • 最后登录2004-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-10 16:48
  我是问以前的计算机结构

在看汇编语言的时候对这一点很迷惑
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-05-10 17:42
CPU中有对程序员不可见的段描述符影射寄存器,所有的描述符都存放在影射寄存器中,根本不用访问内存段,而直接由EIP访问代码段,即可,在保护模式下,所有段都是0~4G的FLAT模式,所以更无所谓了,以前所谓的DOS下访问4GB空间,就是利用缓冲积存器的原理,进入保护模式,设置4GB描述符,再返回实模式,而缓冲积存器中的描述符并没有刷新,所以可以访问超过1M的内存,当然8086由于不支持保护模式,所以还是不行的,嘿嘿。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部